home *** CD-ROM | disk | FTP | other *** search
MacBinary | 1999-01-14 | 52.4 KB | [TEXT/MSET] |
open in:
MacOS 8.1
|
Win98
|
DOS
browse contents |
view JSON data
|
view as text
This file was processed as: MacBinary
(archive/macBinary).
Confidence | Program | Detection | Match Type | Support
|
---|
10%
| dexvert
| MacBinary (archive/macBinary)
| fallback
| Supported |
1%
| dexvert
| Text File (text/txt)
| fallback
| Supported |
100%
| file
| MacBinary II, inited, Thu Jan 14 14:21:34 1999, modified Thu Jan 14 14:21:34 1999, creator 'MSET', type ASCII, 53031 bytes "cg6" , at 0xcfa7 381 bytes resource
| default (weak)
| |
99%
| file
| data
| default
| |
74%
| TrID
| Macintosh plain text (MacBinary)
| default
| |
25%
| TrID
| MacBinary 2
| default (weak)
| |
0%
| TrID
| Sybase iAnywhere database files
| default (weak)
| |
100%
| siegfried
| fmt/1762 MacBinary (II)
| default
| |
100%
| lsar
| MacBinary
| default
|
|
id metadata |
---|
key | value |
---|
macFileType | [TEXT] |
macFileCreator | [MSET] |
hex view+--------+-------------------------+-------------------------+--------+--------+
|00000000| 00 03 63 67 36 00 00 00 | 00 00 00 00 00 00 00 00 |..cg6...|........|
|00000010| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000020| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000030| 00 00 00 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |........|........|
|00000040| 00 54 45 58 54 4d 53 45 | 54 01 00 00 00 00 00 00 |.TEXTMSE|T.......|
|00000050| 00 00 00 00 00 cf 27 00 | 00 01 7d b2 c3 f4 3e b2 |......'.|..}...>.|
|00000060| c3 f4 3e 00 00 00 00 00 | 00 00 00 00 00 00 00 00 |..>.....|........|
|00000070| 00 00 00 00 00 00 00 00 | 00 00 81 81 7b 8c 00 00 |........|....{...|
|00000080| 50 50 43 3f 0d 5b 49 46 | 5d 0d 66 61 6c 73 65 09 |PPC?.[IF|].false.|
|00000090| 63 6f 6e 73 74 61 6e 74 | 09 64 65 62 75 67 3f 0d |constant|.debug?.|
|000000a0| 5b 45 4c 53 45 5d 0d 66 | 61 6c 73 65 09 63 6f 6e |[ELSE].f|alse.con|
|000000b0| 73 74 61 6e 74 09 64 65 | 62 75 67 3f 0d 5b 54 48 |stant.de|bug?.[TH|
|000000c0| 45 4e 5d 0d 0d 0d 0d 5c | 09 3d 3d 3d 3d 3d 3d 3d |EN]....\|.=======|
|000000d0| 3d 3d 3d 3d 3d 3d 3d 3d | 20 20 53 55 4e 44 52 59 |========| SUNDRY|
|000000e0| 20 49 4e 44 49 56 49 44 | 55 41 4c 20 48 41 4e 44 | INDIVID|UAL HAND|
|000000f0| 4c 45 52 53 20 20 3d 3d | 3d 3d 3d 3d 3d 3d 3d 3d |LERS ==|========|
|00000100| 3d 3d 3d 3d 3d 3d 3d 3d | 0d 0d 4f 44 09 76 61 6c |========|..OD.val|
|00000110| 4f 44 0d 0d 50 50 43 3f | 20 6e 6f 74 0d 5b 49 46 |OD..PPC?| not.[IF|
|00000120| 5d 0d 0d 3a 20 36 38 6b | 52 65 67 3e 50 50 43 20 |]..: 68k|Reg>PPC |
|00000130| 20 7b 20 72 65 67 23 20 | 5c 20 72 65 67 54 79 70 | { reg# |\ regTyp|
|00000140| 65 20 2d 2d 20 70 70 63 | 2d 72 65 67 23 20 7d 0d |e -- ppc|-reg# }.|
|00000150| 09 72 65 67 23 20 24 20 | 45 30 20 61 6e 64 20 20 |.reg# $ |E0 and |
|00000160| 2d 3e 20 72 65 67 54 79 | 70 65 09 5c 20 30 20 44 |-> regTy|pe.\ 0 D|
|00000170| 6e 2c 20 24 32 30 20 46 | 50 6e 2c 20 24 34 30 20 |n, $20 F|Pn, $40 |
|00000180| 41 6e 2c 20 24 36 30 20 | 61 6c 72 65 61 64 79 20 |An, $60 |already |
|00000190| 61 20 50 50 43 20 72 65 | 67 0d 09 72 65 67 23 20 |a PPC re|g..reg# |
|000001a0| 24 20 31 46 20 61 6e 64 | 20 20 2d 3e 20 72 65 67 |$ 1F and| -> reg|
|000001b0| 23 0d 0d 09 72 65 67 54 | 79 70 65 0d 09 43 41 53 |#...regT|ype..CAS|
|000001c0| 45 5b 09 24 20 36 30 09 | 5d 3d 3e 09 09 09 72 65 |E[.$ 60.|]=>...re|
|000001d0| 67 23 09 5c 20 61 6c 72 | 65 61 64 79 20 61 20 50 |g#.\ alr|eady a P|
|000001e0| 50 43 20 72 65 67 23 20 | 2d 20 6c 65 61 76 65 20 |PC reg# |- leave |
|000001f0| 75 6e 63 68 61 6e 67 65 | 64 0d 09 09 20 20 0d 09 |unchange|d... ..|
|00000200| 09 5b 09 30 09 09 5d 3d | 3e 09 09 09 09 09 5c 20 |.[.0..]=|>.....\ |
|00000210| 44 6e 20 6f 6e 20 36 38 | 6b 0d 09 09 09 72 65 67 |Dn on 68|k....reg|
|00000220| 23 0d 09 09 09 53 45 4c | 45 43 54 5b 09 31 09 5d |#....SEL|ECT[.1.]|
|00000230| 3d 3e 09 09 30 0d 09 09 | 09 20 20 09 20 20 5b 09 |=>..0...|. . [.|
|00000240| 33 09 5d 3d 3e 09 09 49 | 5f 72 65 67 0d 09 09 09 |3.]=>..I|_reg....|
|00000250| 09 20 20 44 45 46 41 55 | 4c 54 3d 3e 09 09 64 72 |. DEFAU|LT=>..dr|
|00000260| 6f 70 20 20 30 0d 09 09 | 09 5d 53 45 4c 45 43 54 |op 0...|.]SELECT|
|00000270| 0d 09 09 09 0d 09 20 20 | 20 20 5b 09 24 20 32 30 |...... | [.$ 20|
|00000280| 09 5d 3d 3e 0d 09 20 20 | 20 20 0d 09 09 5b 09 24 |.]=>.. | ...[.$|
|00000290| 20 34 30 09 5d 3d 3e 09 | 09 09 09 09 5c 20 41 6e | 40.]=>.|....\ An|
|000002a0| 20 6f 6e 20 36 38 6b 0d | 09 09 09 72 65 67 23 0d | on 68k.|...reg#.|
|000002b0| 09 09 09 53 45 4c 45 43 | 54 5b 09 32 09 5d 3d 3e |...SELEC|T[.2.]=>|
|000002c0| 09 09 6f 62 6a 5f 62 61 | 73 65 5f 72 65 67 0d 09 |..obj_ba|se_reg..|
|000002d0| 09 09 09 20 20 5b 09 33 | 09 5d 3d 3e 09 09 6d 61 |... [.3|.]=>..ma|
|000002e0| 69 6e 44 61 74 61 5f 72 | 65 67 0d 09 09 09 09 20 |inData_r|eg..... |
|000002f0| 20 5b 09 34 09 5d 3d 3e | 09 09 6d 61 69 6e 44 61 | [.4.]=>|..mainDa|
|00000300| 74 61 5f 72 65 67 0d 09 | 09 09 09 20 20 5b 09 35 |ta_reg..|... [.5|
|00000310| 09 5d 3d 3e 09 09 6d 6f | 64 44 61 74 61 5f 72 65 |.]=>..mo|dData_re|
|00000320| 67 0d 09 09 09 09 20 20 | 44 45 46 41 55 4c 54 3d |g..... |DEFAULT=|
|00000330| 3e 09 09 64 62 20 64 72 | 6f 70 20 20 30 0d 09 09 |>..db dr|op 0...|
|00000340| 09 5d 53 45 4c 45 43 54 | 0d 0d 09 09 44 45 46 41 |.]SELECT|....DEFA|
|00000350| 55 4c 54 3d 3e 09 64 62 | 0d 09 5d 43 41 53 45 0d |ULT=>.db|..]CASE.|
|00000360| 3b 0d 0d 5b 54 48 45 4e | 5d 0d 0d 0d 3a 20 5e 45 |;..[THEN|]...: ^E|
|00000370| 58 54 52 41 5f 49 4e 46 | 4f 20 20 7b 20 63 66 61 |XTRA_INF|O { cfa|
|00000380| 20 2d 2d 20 61 64 64 72 | 20 7d 0d 09 63 66 61 20 | -- addr| }..cfa |
|00000390| 63 40 20 20 24 20 46 46 | 20 3d 0d 09 49 46 20 20 |c@ $ FF| =..IF |
|000003a0| 32 20 20 45 4c 53 45 20 | 20 34 20 20 54 48 45 4e |2 ELSE | 4 THEN|
|000003b0| 20 20 63 66 61 20 2b 20 | 20 3b 0d 0d 0d 50 50 43 | cfa + | ;...PPC|
|000003c0| 3f 0d 5b 49 46 5d 0d 0d | 3a 20 67 65 6e 41 64 64 |?.[IF]..|: genAdd|
|000003d0| 72 20 20 7b 20 62 61 73 | 65 2d 72 65 67 20 64 69 |r { bas|e-reg di|
|000003e0| 73 70 6c 20 69 6e 64 23 | 20 2d 2d 20 7d 0d 0d 28 |spl ind#| -- }..(|
|000003f0| 2a 09 52 61 74 68 65 72 | 20 73 69 6d 69 6c 61 72 |*.Rather| similar|
|00000400| 20 74 6f 20 6c 69 74 61 | 64 64 72 5f 68 2e 20 20 | to lita|ddr_h. |
|00000410| 43 61 6c 6c 65 64 20 76 | 69 61 20 28 4f 42 4a 29 |Called v|ia (OBJ)|
|00000420| 20 77 68 65 6e 20 77 65 | 20 61 72 65 20 63 6f 6d | when we| are com|
|00000430| 70 69 6c 69 6e 67 0d 09 | 61 6e 20 69 6e 6c 69 6e |piling..|an inlin|
|00000440| 65 20 6d 65 74 68 6f 64 | 2c 20 61 6e 64 20 67 65 |e method|, and ge|
|00000450| 6e 65 72 61 74 69 6e 67 | 20 74 68 65 20 6f 62 6a |nerating| the obj|
|00000460| 65 63 74 20 61 64 64 72 | 65 73 73 2e 20 20 54 68 |ect addr|ess. Th|
|00000470| 65 20 22 62 61 73 65 2d | 72 65 67 22 20 6d 61 79 |e "base-|reg" may|
|00000480| 0d 09 62 65 20 6e 65 67 | 61 74 69 76 65 2c 20 69 |..be neg|ative, i|
|00000490| 6e 20 77 68 69 63 68 20 | 63 61 73 65 20 74 68 65 |n which |case the|
|000004a0| 20 22 64 69 73 70 6c 22 | 20 69 73 20 61 6e 20 61 | "displ"| is an a|
|000004b0| 62 73 6f 6c 75 74 65 20 | 61 64 64 72 65 73 73 2e |bsolute |address.|
|000004c0| 0d 09 49 20 73 75 73 70 | 65 63 74 20 69 6e 64 23 |..I susp|ect ind#|
|000004d0| 20 77 69 6c 6c 20 61 6c | 77 61 79 73 20 62 65 20 | will al|ways be |
|000004e0| 7a 65 72 6f 20 6f 6e 20 | 74 68 65 20 50 50 43 2c |zero on |the PPC,|
|000004f0| 20 73 6f 20 49 27 6c 6c | 20 74 72 61 70 20 69 74 | so I'll| trap it|
|00000500| 20 69 66 20 69 74 27 73 | 0d 09 6e 6f 74 2e 0d 2a | if it's|..not..*|
|00000510| 29 0d 09 69 6e 64 23 20 | 69 66 20 24 20 64 65 61 |)..ind# |if $ dea|
|00000520| 64 62 65 65 66 20 24 20 | 31 32 39 20 64 62 20 32 |dbeef $ |129 db 2|
|00000530| 64 72 6f 70 20 74 68 65 | 6e 0d 09 0d 09 62 61 73 |drop the|n....bas|
|00000540| 65 2d 72 65 67 20 30 3c | 0d 09 49 46 09 09 64 69 |e-reg 0<|..IF..di|
|00000550| 73 70 6c 20 62 26 64 0d | 09 45 4c 53 45 09 62 61 |spl b&d.|.ELSE.ba|
|00000560| 73 65 2d 72 65 67 20 20 | 64 69 73 70 6c 0d 09 54 |se-reg |displ..T|
|00000570| 48 45 4e 0d 09 28 6c 69 | 74 41 64 64 72 29 0d 3b |HEN..(li|tAddr).;|
|00000580| 0d 0d 5b 45 4c 53 45 5d | 09 09 5c 20 6f 6e 6c 79 |..[ELSE]|..\ only|
|00000590| 20 63 68 61 6e 67 65 20 | 69 73 20 74 6f 20 61 64 | change |is to ad|
|000005a0| 64 20 36 38 6b 52 65 67 | 3e 50 50 43 20 63 61 6c |d 68kReg|>PPC cal|
|000005b0| 6c 2e 0d 0d 3a 20 67 65 | 6e 41 64 64 72 20 20 7b |l...: ge|nAddr {|
|000005c0| 20 62 61 73 65 2d 72 65 | 67 20 64 69 73 70 6c 20 | base-re|g displ |
|000005d0| 69 6e 64 23 20 2d 2d 20 | 7d 0d 0d 09 69 6e 64 23 |ind# -- |}...ind#|
|000005e0| 20 69 66 20 24 20 64 65 | 61 64 62 65 65 66 20 24 | if $ de|adbeef $|
|000005f0| 20 31 30 30 20 64 62 20 | 32 64 72 6f 70 20 74 68 | 100 db |2drop th|
|00000600| 65 6e 0d 09 62 61 73 65 | 2d 72 65 67 20 30 3c 0d |en..base|-reg 0<.|
|00000610| 09 49 46 09 09 64 69 73 | 70 6c 20 62 26 64 0d 09 |.IF..dis|pl b&d..|
|00000620| 45 4c 53 45 09 62 61 73 | 65 2d 72 65 67 20 36 38 |ELSE.bas|e-reg 68|
|00000630| 6b 52 65 67 3e 50 50 43 | 0d 09 09 09 64 69 73 70 |kReg>PPC|....disp|
|00000640| 6c 0d 09 54 48 45 4e 0d | 09 28 6c 69 74 41 64 64 |l..THEN.|.(litAdd|
|00000650| 72 29 0d 3b 0d 0d 5b 54 | 48 45 4e 5d 0d 0d 0d 3a |r).;..[T|HEN]...:|
|00000660| 20 67 65 6e 58 41 64 64 | 72 20 7b 20 69 78 77 69 | genXAdd|r { ixwi|
|00000670| 64 20 69 78 6f 66 66 73 | 20 62 61 73 65 2d 72 65 |d ixoffs| base-re|
|00000680| 67 20 64 69 73 70 6c 20 | 6c 6f 63 61 6c 2d 64 69 |g displ |local-di|
|00000690| 73 70 6c 20 69 6e 64 23 | 20 66 6c 61 67 73 20 5c |spl ind#| flags \|
|000006a0| 20 6c 69 6d 20 2d 2d 20 | 7d 0d 0d 28 2a 09 43 61 | lim -- |}..(*.Ca|
|000006b0| 6c 6c 65 64 20 62 79 20 | 28 49 58 29 20 77 68 65 |lled by |(IX) whe|
|000006c0| 6e 20 77 65 20 61 72 65 | 20 63 6f 6d 70 69 6c 69 |n we are| compili|
|000006d0| 6e 67 20 61 6e 20 69 6e | 2d 6c 69 6e 65 20 6d 65 |ng an in|-line me|
|000006e0| 74 68 6f 64 2c 20 61 6e | 64 20 67 65 6e 65 72 61 |thod, an|d genera|
|000006f0| 74 69 6e 67 0d 09 74 68 | 65 20 61 64 64 72 65 73 |ting..th|e addres|
|00000700| 73 20 6f 66 20 61 6e 20 | 69 6e 64 65 78 65 64 20 |s of an |indexed |
|00000710| 65 6c 65 6d 65 6e 74 20 | 6f 66 20 74 68 65 20 63 |element |of the c|
|00000720| 75 72 72 65 6e 74 20 6f | 62 6a 65 63 74 2e 0d 09 |urrent o|bject...|
|00000730| 54 68 65 20 62 61 73 65 | 2d 72 65 67 2c 20 64 69 |The base|-reg, di|
|00000740| 73 70 6c 20 61 6e 64 20 | 69 6e 64 20 72 65 66 65 |spl and |ind refe|
|00000750| 72 73 20 74 6f 20 74 68 | 65 20 6f 62 6a 20 61 64 |rs to th|e obj ad|
|00000760| 64 72 2e 20 20 69 78 6f | 66 66 73 20 69 73 20 74 |dr. ixo|ffs is t|
|00000770| 68 65 20 6f 66 66 73 65 | 74 0d 09 74 6f 20 74 68 |he offse|t..to th|
|00000780| 65 20 69 6e 64 65 78 65 | 64 20 61 72 65 61 2c 20 |e indexe|d area, |
|00000790| 69 66 20 77 65 20 6b 6e | 6f 77 20 69 74 2e 20 20 |if we kn|ow it. |
|000007a0| 54 68 69 73 20 77 69 6c | 6c 20 68 61 70 70 65 6e |This wil|l happen|
|000007b0| 20 69 66 20 74 68 65 20 | 6f 62 6a 0d 09 69 73 20 | if the |obj..is |
|000007c0| 61 20 73 74 72 61 69 67 | 68 74 20 6f 62 6a 65 63 |a straig|ht objec|
|000007d0| 74 20 6f 72 20 61 6e 20 | 69 76 61 72 20 28 69 76 |t or an |ivar (iv|
|000007e0| 61 72 73 20 61 72 65 20 | 67 65 6e 65 72 69 63 20 |ars are |generic |
|000007f0| 74 6f 20 61 20 63 6c 61 | 73 73 2c 20 62 75 74 0d |to a cla|ss, but.|
|00000800| 09 65 61 63 68 20 6f 6e | 65 20 68 61 73 20 61 20 |.each on|e has a |
|00000810| 66 69 78 65 64 20 69 78 | 6f 66 66 73 29 2e 20 20 |fixed ix|offs). |
|00000820| 49 6e 20 74 68 65 73 65 | 20 63 61 73 65 73 20 77 |In these| cases w|
|00000830| 65 20 63 61 6e 20 61 62 | 73 6f 72 62 20 74 68 65 |e can ab|sorb the|
|00000840| 20 69 78 6f 66 66 73 0d | 09 61 74 20 63 6f 6d 70 | ixoffs.|.at comp|
|00000850| 69 6c 65 20 74 69 6d 65 | 2e 20 20 49 66 2c 20 68 |ile time|. If, h|
|00000860| 6f 77 65 76 65 72 2c 20 | 74 68 65 20 22 6f 62 6a |owever, |the "obj|
|00000870| 22 20 69 73 20 73 65 6c | 66 20 6f 72 20 73 75 70 |" is sel|f or sup|
|00000880| 65 72 2c 20 74 68 65 6e | 20 77 65 20 77 6f 6e 27 |er, then| we won'|
|00000890| 74 0d 09 6b 6e 6f 77 20 | 74 68 65 20 69 78 6f 66 |t..know |the ixof|
|000008a0| 66 73 20 61 74 20 63 6f | 6d 70 69 6c 65 20 74 69 |fs at co|mpile ti|
|000008b0| 6d 65 2c 20 73 69 6e 63 | 65 20 61 74 20 64 69 66 |me, sinc|e at dif|
|000008c0| 66 65 72 65 6e 74 20 70 | 6f 69 6e 74 73 20 69 6e |ferent p|oints in|
|000008d0| 20 74 68 65 20 63 6c 61 | 73 73 0d 09 68 69 65 72 | the cla|ss..hier|
|000008e0| 61 72 63 68 79 20 74 68 | 65 20 69 78 6f 66 66 73 |archy th|e ixoffs|
|000008f0| 20 69 73 20 64 69 66 66 | 65 72 65 6e 74 2e 20 20 | is diff|erent. |
|00000900| 49 74 20 69 73 20 61 6c | 77 61 79 73 20 6c 6f 63 |It is al|ways loc|
|00000910| 61 74 65 64 20 61 74 20 | 72 75 6e 20 74 69 6d 65 |ated at |run time|
|00000920| 0d 09 32 20 62 79 74 65 | 73 20 61 66 74 65 72 20 |..2 byte|s after |
|00000930| 74 68 65 20 63 6c 61 73 | 73 20 70 6f 69 6e 74 65 |the clas|s pointe|
|00000940| 72 20 28 74 68 69 73 20 | 69 73 20 63 68 61 6e 67 |r (this |is chang|
|00000950| 65 64 20 66 72 6f 6d 20 | 36 38 6b 29 2e 20 20 49 |ed from |68k). I|
|00000960| 6e 20 74 68 69 73 0d 09 | 63 61 73 65 20 77 65 20 |n this..|case we |
|00000970| 77 69 6c 6c 20 70 61 73 | 73 20 69 6e 20 61 20 6e |will pas|s in a n|
|00000980| 65 67 61 74 69 76 65 20 | 22 69 78 6f 66 66 73 22 |egative |"ixoffs"|
|00000990| 2e 0d 09 41 73 20 66 6f | 72 20 68 47 65 6e 61 64 |...As fo|r hGenad|
|000009a0| 64 72 2c 20 74 68 65 20 | 22 62 61 73 65 2d 72 65 |dr, the |"base-re|
|000009b0| 67 22 20 6d 61 79 20 62 | 65 20 6e 65 67 61 74 69 |g" may b|e negati|
|000009c0| 76 65 2c 20 77 68 69 63 | 68 20 6d 65 61 6e 73 20 |ve, whic|h means |
|000009d0| 74 68 61 74 20 74 68 65 | 0d 09 22 64 69 73 70 6c |that the|.."displ|
|000009e0| 22 20 69 73 20 61 63 74 | 75 61 6c 6c 79 20 61 6e |" is act|ually an|
|000009f0| 20 61 62 73 6f 6c 75 74 | 65 20 61 64 64 72 2e 0d | absolut|e addr..|
|00000a00| 2a 29 0d 0d 09 2d 31 20 | 2d 3e 20 6c 69 6d 0d 09 |*)...-1 |-> lim..|
|00000a10| 62 61 73 65 2d 72 65 67 | 20 30 3c 0d 09 49 46 09 |base-reg| 0<..IF.|
|00000a20| 64 69 73 70 6c 20 69 78 | 6f 66 66 73 20 2b 20 34 |displ ix|offs + 4|
|00000a30| 2d 20 40 20 20 2d 3e 20 | 6c 69 6d 20 20 54 48 45 |- @ -> |lim THE|
|00000a40| 4e 0d 0d 09 69 78 6f 66 | 66 73 20 30 3c 0d 09 49 |N...ixof|fs 0<..I|
|00000a50| 46 09 22 20 28 5e 62 61 | 73 65 29 20 32 2d 20 64 |F." (^ba|se) 2- d|
|00000a60| 75 70 20 77 40 78 20 2b | 22 20 20 65 76 61 6c 75 |up w@x +|" evalu|
|00000a70| 61 74 65 0d 09 09 72 61 | 6e 67 65 5f 63 68 65 63 |ate...ra|nge_chec|
|00000a80| 6b 3f 0d 09 09 49 46 20 | 20 22 20 32 64 75 70 20 |k?...IF | " 2dup |
|00000a90| 34 2d 20 40 20 75 3e 20 | 3f 74 72 61 70 22 20 20 |4- @ u> |?trap" |
|00000aa0| 65 76 61 6c 75 61 74 65 | 20 20 54 48 45 4e 0d 09 |evaluate| THEN..|
|00000ab0| 45 4c 53 45 0d 09 09 62 | 61 73 65 2d 72 65 67 20 |ELSE...b|ase-reg |
|00000ac0| 20 64 69 73 70 6c 20 69 | 78 6f 66 66 73 20 2b 20 | displ i|xoffs + |
|00000ad0| 6c 6f 63 61 6c 2d 64 69 | 73 70 6c 20 2b 20 20 69 |local-di|spl + i|
|00000ae0| 6e 64 23 20 20 67 65 6e | 41 64 64 72 0d 09 09 09 |nd# gen|Addr....|
|00000af0| 09 5c 20 6e 6f 74 65 20 | 2d 20 77 65 20 63 61 6e |.\ note |- we can|
|00000b00| 27 74 20 6a 75 73 74 20 | 61 64 64 20 74 68 65 20 |'t just |add the |
|00000b10| 6c 6f 63 61 6c 2d 64 69 | 73 70 6c 20 69 66 20 69 |local-di|spl if i|
|00000b20| 6e 64 23 20 69 73 20 6e | 6f 6e 7a 65 72 6f 2c 0d |nd# is n|onzero,.|
|00000b30| 09 09 09 09 5c 20 20 62 | 75 74 20 49 20 74 68 69 |....\ b|ut I thi|
|00000b40| 6e 6b 20 6f 6e 20 74 68 | 65 20 50 50 43 20 77 65 |nk on th|e PPC we|
|00000b50| 20 63 61 6e 20 61 72 72 | 61 6e 67 65 20 66 6f 72 | can arr|ange for|
|00000b60| 20 69 74 20 74 6f 20 61 | 6c 77 61 79 73 20 62 65 | it to a|lways be|
|00000b70| 0d 09 09 09 09 5c 20 20 | 7a 65 72 6f 20 28 61 6e |.....\ |zero (an|
|00000b80| 64 20 77 65 27 6c 6c 20 | 67 65 74 20 72 69 64 20 |d we'll |get rid |
|00000b90| 6f 66 20 69 74 20 61 6c | 74 6f 67 65 74 68 65 72 |of it al|together|
|00000ba0| 20 65 76 65 6e 74 75 61 | 6c 6c 79 29 2e 0d 0d 5c | eventua|lly)...\|
|00000bb0| 20 72 75 6e 20 74 69 6d | 65 3a 20 28 20 69 6e 64 | run tim|e: ( ind|
|00000bc0| 65 78 20 5e 69 6e 64 65 | 78 65 64 2d 61 72 65 61 |ex ^inde|xed-area|
|00000bd0| 20 29 0d 0d 09 09 72 61 | 6e 67 65 5f 63 68 65 63 | )....ra|nge_chec|
|00000be0| 6b 3f 0d 09 09 49 46 0d | 09 09 09 6c 69 6d 20 30 |k?...IF.|...lim 0|
|00000bf0| 3c 0d 09 09 09 49 46 0d | 09 09 09 09 22 20 32 64 |<....IF.|...." 2d|
|00000c00| 75 70 20 34 2d 20 40 20 | 75 3e 20 3f 74 72 61 70 |up 4- @ |u> ?trap|
|00000c10| 22 0d 09 09 09 45 4c 53 | 45 09 09 09 5c 20 77 65 |"....ELS|E...\ we|
|00000c20| 20 68 61 76 65 20 74 68 | 65 20 6f 62 6a 65 63 74 | have th|e object|
|00000c30| 20 61 76 61 69 6c 61 62 | 6c 65 0d 09 09 09 09 22 | availab|le....."|
|00000c40| 20 6f 76 65 72 22 20 65 | 76 61 6c 75 61 74 65 09 | over" e|valuate.|
|00000c50| 09 5c 20 67 65 74 20 69 | 6e 64 65 78 0d 09 09 09 |.\ get i|ndex....|
|00000c60| 09 6c 69 6d 20 20 70 6f | 73 74 70 6f 6e 65 20 6c |.lim po|stpone l|
|00000c70| 69 74 65 72 61 6c 0d 09 | 09 09 09 22 20 75 3e 20 |iteral..|..." u> |
|00000c80| 3f 74 72 61 70 22 0d 09 | 09 09 54 48 45 4e 0d 09 |?trap"..|..THEN..|
|00000c90| 09 09 65 76 61 6c 75 61 | 74 65 0d 09 09 54 48 45 |..evalua|te...THE|
|00000ca0| 4e 0d 09 54 48 45 4e 0d | 0d 09 73 77 61 70 5f 63 |N..THEN.|..swap_c|
|00000cb0| 73 74 6b 0d 0d 09 64 65 | 62 75 67 3f 20 69 66 0d |stk...de|bug? if.|
|00000cc0| 09 09 2e 22 20 61 62 6f | 75 74 20 74 6f 20 67 65 |..." abo|ut to ge|
|00000cd0| 6e 20 69 6e 64 65 78 65 | 64 20 61 64 64 72 20 2d |n indexe|d addr -|
|00000ce0| 20 63 73 74 6b 3a 22 20 | 70 72 69 6e 74 61 6c 6c | cstk:" |printall|
|00000cf0| 3a 20 63 73 74 6b 0d 09 | 74 68 65 6e 0d 09 69 78 |: cstk..|then..ix|
|00000d00| 77 69 64 20 31 20 3e 20 | 49 46 20 20 69 78 77 69 |wid 1 > |IF ixwi|
|00000d10| 64 20 20 70 6f 73 74 70 | 6f 6e 65 20 6c 69 74 65 |d postp|one lite|
|00000d20| 72 61 6c 20 20 70 6f 73 | 74 70 6f 6e 65 20 2a 20 |ral pos|tpone * |
|00000d30| 20 54 48 45 4e 0d 09 70 | 6f 73 74 70 6f 6e 65 20 | THEN..p|ostpone |
|00000d40| 2b 0d 09 64 65 62 75 67 | 3f 20 69 66 0d 09 09 2e |+..debug|? if....|
|00000d50| 22 20 61 66 74 65 72 77 | 61 72 64 73 20 2d 20 63 |" afterw|ards - c|
|00000d60| 73 74 6b 3a 22 20 70 72 | 69 6e 74 61 6c 6c 3a 20 |stk:" pr|intall: |
|00000d70| 63 73 74 6b 0d 09 74 68 | 65 6e 0d 3b 0d 0d 0d 3a |cstk..th|en.;...:|
|00000d80| 20 68 53 74 6b 4f 62 6a | 09 5c 20 28 20 2d 2d 20 | hStkObj|.\ ( -- |
|00000d90| 62 61 73 65 2d 72 65 67 | 20 64 69 73 70 6c 20 29 |base-reg| displ )|
|00000da0| 0d 0d 28 2a 09 53 65 74 | 73 20 75 70 20 66 6f 72 |..(*.Set|s up for|
|00000db0| 20 61 6e 20 65 61 72 6c | 79 20 62 69 6e 64 20 74 | an earl|y bind t|
|00000dc0| 6f 20 61 6e 20 6f 62 6a | 65 63 74 20 77 68 6f 73 |o an obj|ect whos|
|00000dd0| 65 0d 09 28 64 61 74 61 | 29 20 61 64 64 72 20 69 |e..(data|) addr i|
|00000de0| 73 20 6f 6e 20 74 68 65 | 20 73 74 61 63 6b 20 61 |s on the| stack a|
|00000df0| 74 20 72 75 6e 20 74 69 | 6d 65 2e 20 20 57 65 20 |t run ti|me. We |
|00000e00| 61 6c 73 6f 20 68 61 6e | 64 6c 65 20 6f 62 6a 65 |also han|dle obje|
|00000e10| 63 74 0d 09 70 6f 69 6e | 74 65 72 73 20 74 68 69 |ct..poin|ters thi|
|00000e20| 73 20 77 61 79 2c 20 62 | 79 20 66 69 72 73 74 20 |s way, b|y first |
|00000e30| 63 6f 6d 70 69 6c 69 6e | 67 20 61 20 66 65 74 63 |compilin|g a fetc|
|00000e40| 68 20 6f 66 20 74 68 65 | 20 6f 62 6a 50 74 72 0d |h of the| objPtr.|
|00000e50| 09 74 6f 20 74 68 65 20 | 73 74 61 63 6b 2c 20 61 |.to the |stack, a|
|00000e60| 6e 64 20 72 65 6c 79 69 | 6e 67 20 6f 6e 20 6f 75 |nd relyi|ng on ou|
|00000e70| 72 20 6f 70 74 69 6d 69 | 7a 61 74 69 6f 6e 20 74 |r optimi|zation t|
|00000e80| 6f 20 69 6d 70 72 6f 76 | 65 20 74 68 65 20 63 6f |o improv|e the co|
|00000e90| 64 65 2e 0d 09 52 61 74 | 68 65 72 20 74 68 61 6e |de...Rat|her than|
|00000ea0| 20 6c 65 61 76 69 6e 67 | 20 74 68 65 20 5e 6f 62 | leaving| the ^ob|
|00000eb0| 6a 20 6f 6e 20 74 68 65 | 20 73 74 61 63 6b 2c 20 |j on the| stack, |
|00000ec0| 77 65 20 72 65 74 75 72 | 6e 20 74 68 65 20 61 64 |we retur|n the ad|
|00000ed0| 64 72 65 73 73 69 6e 67 | 0d 09 69 6e 66 6f 20 62 |dressing|..info b|
|00000ee0| 61 63 6b 20 74 6f 20 74 | 68 65 20 43 4c 41 53 53 |ack to t|he CLASS|
|00000ef0| 20 63 6f 64 65 2e 20 20 | 54 68 69 73 20 69 73 20 | code. |This is |
|00000f00| 62 65 63 61 75 73 65 20 | 77 65 20 6d 61 79 20 62 |because |we may b|
|00000f10| 65 20 62 69 6e 64 69 6e | 67 20 74 6f 20 61 6e 0d |e bindin|g to an.|
|00000f20| 09 69 6e 6c 69 6e 65 20 | 6d 65 74 68 6f 64 20 77 |.inline |method w|
|00000f30| 68 69 63 68 20 75 73 65 | 73 20 4f 42 4a 20 61 6e |hich use|s OBJ an|
|00000f40| 79 77 68 65 72 65 20 2d | 20 6d 6f 72 65 20 74 68 |ywhere -| more th|
|00000f50| 61 6e 20 6f 6e 63 65 2c | 20 65 76 65 6e 2e 0d 2a |an once,| even..*|
|00000f60| 29 0d 09 64 65 62 75 67 | 3f 20 69 66 0d 09 09 2e |)..debug|? if....|
|00000f70| 22 20 68 53 74 6b 4f 62 | 6a 20 63 61 6c 6c 65 64 |" hStkOb|j called|
|00000f80| 20 2d 20 63 73 74 6b 3a | 22 20 20 70 72 69 6e 74 | - cstk:|" print|
|00000f90| 61 6c 6c 3a 20 63 73 74 | 6b 20 63 72 0d 09 74 68 |all: cst|k cr..th|
|00000fa0| 65 6e 0d 09 31 20 6f 70 | 65 72 61 6e 64 73 0d 09 |en..1 op|erands..|
|00000fb0| 72 65 66 74 79 70 65 3a | 20 6f 70 6e 64 31 20 67 |reftype:| opnd1 g|
|00000fc0| 70 72 52 65 66 20 3c 3e | 20 20 49 46 20 20 32 31 |prRef <>| IF 21|
|00000fd0| 30 20 64 69 65 20 20 54 | 48 45 4e 09 09 5c 20 22 |0 die T|HEN..\ "|
|00000fe0| 63 61 6e 27 74 20 62 69 | 6e 64 20 74 6f 20 74 68 |can't bi|nd to th|
|00000ff0| 61 74 22 0d 5c 09 6f 70 | 6e 64 31 20 67 65 74 5f |at".\.op|nd1 get_|
|00001000| 74 6f 5f 72 65 67 3f 20 | 64 72 6f 70 0d 09 67 70 |to_reg? |drop..gp|
|00001010| 72 3a 20 6f 70 6e 64 31 | 0d 5b 20 70 70 63 3f 20 |r: opnd1|.[ ppc? |
|00001020| 6e 6f 74 20 5d 0d 5b 69 | 66 5d 0d 09 24 20 36 30 |not ].[i|f]..$ 60|
|00001030| 20 6f 72 09 09 5c 20 74 | 68 65 20 24 36 30 20 6d | or..\ t|he $60 m|
|00001040| 61 72 6b 73 20 74 68 69 | 73 20 61 73 20 61 20 50 |arks thi|s as a P|
|00001050| 50 43 20 72 65 67 2c 20 | 77 68 65 6e 20 74 61 72 |PC reg, |when tar|
|00001060| 67 65 74 0d 09 09 09 09 | 5c 20 20 63 6f 6d 70 69 |get.....|\ compi|
|00001070| 6c 69 6e 67 20 6f 6e 6c | 79 0d 5b 74 68 65 6e 5d |ling onl|y.[then]|
|00001080| 0d 09 30 0d 5c 20 4e 6f | 74 65 3a 20 77 65 20 6d |..0.\ No|te: we m|
|00001090| 75 73 74 6e 27 74 20 20 | 66 72 65 65 3a 20 6f 70 |ustn't |free: op|
|000010a0| 6e 64 31 20 20 68 65 72 | 65 2c 20 73 69 6e 63 65 |nd1 her|e, since|
|000010b0| 20 74 68 65 20 75 70 63 | 6f 6d 69 6e 67 20 65 61 | the upc|oming ea|
|000010c0| 72 6c 79 5f 62 69 6e 64 | 0d 5c 20 20 63 61 6c 6c |rly_bind|.\ call|
|000010d0| 20 6d 61 79 20 65 78 65 | 63 75 74 65 20 69 6e 6c | may exe|cute inl|
|000010e0| 69 6e 65 20 63 6f 64 65 | 20 77 68 69 63 68 20 61 |ine code| which a|
|000010f0| 6c 6c 6f 63 61 74 65 73 | 20 61 20 72 65 67 21 0d |llocates| a reg!.|
|00001100| 3b 0d 0d 0d 3a 20 43 52 | 45 41 54 45 5f 48 09 6c |;...: CR|EATE_H.l|
|00001110| 69 74 41 64 64 72 5f 68 | 20 20 3b 0d 3a 20 42 55 |itAddr_h| ;.: BU|
|00001120| 49 4c 44 53 5f 48 09 34 | 2b 20 20 6c 69 74 41 64 |ILDS_H.4|+ litAd|
|00001130| 64 72 5f 68 20 20 3b 0d | 3a 20 4f 42 4a 5f 48 09 |dr_h ;.|: OBJ_H.|
|00001140| 09 6c 69 74 41 64 64 72 | 5f 68 20 20 3b 09 09 5c |.litAddr|_h ;..\|
|00001150| 20 70 74 72 20 70 6f 69 | 6e 74 73 20 74 6f 20 6f | ptr poi|nts to o|
|00001160| 62 6a 27 73 20 64 61 74 | 61 2c 20 31 32 20 62 79 |bj's dat|a, 12 by|
|00001170| 74 65 73 20 61 66 74 65 | 72 0d 09 09 09 09 09 09 |tes afte|r.......|
|00001180| 09 09 5c 20 20 74 68 65 | 20 6f 62 6a 20 68 65 61 |..\ the| obj hea|
|00001190| 64 65 72 0d 0d 0d 70 70 | 63 3f 20 6e 6f 74 0d 5b |der...pp|c? not.[|
|000011a0| 49 46 5d 0d 0d 3a 20 43 | 4c 41 53 53 5f 48 09 64 |IF]..: C|LASS_H.d|
|000011b0| 62 20 20 3b 09 09 5c 20 | 6d 75 73 74 6e 27 74 20 |b ;..\ |mustn't |
|000011c0| 67 65 74 20 63 61 6c 6c | 65 64 20 6f 6e 20 74 68 |get call|ed on th|
|000011d0| 65 20 36 38 6b 20 2d 20 | 70 70 63 5f 6f 62 6a 20 |e 68k - |ppc_obj |
|000011e0| 69 73 20 77 68 61 74 20 | 67 65 74 73 0d 09 09 09 |is what |gets....|
|000011f0| 09 09 09 5c 20 20 63 61 | 6c 6c 65 64 2e 20 20 54 |...\ ca|lled. T|
|00001200| 68 65 20 70 72 6f 70 65 | 72 20 50 50 43 20 63 6c |he prope|r PPC cl|
|00001210| 61 73 73 5f 68 20 69 73 | 20 64 65 66 69 6e 65 64 |ass_h is| defined|
|00001220| 20 69 6e 20 71 70 43 6c | 61 73 73 2e 0d 0d 5b 54 | in qpCl|ass...[T|
|00001230| 48 45 4e 5d 0d 0d 0d 3a | 20 44 4f 5f 46 45 54 43 |HEN]...:| DO_FETC|
|00001240| 48 20 20 7b 20 6c 65 6e | 20 66 6c 61 67 73 20 5c |H { len| flags \|
|00001250| 20 72 65 67 23 20 20 2d | 2d 20 7d 0d 0d 09 31 20 | reg# -|- }...1 |
|00001260| 6f 70 65 72 61 6e 64 73 | 0d 09 64 65 62 75 67 3f |operands|..debug?|
|00001270| 20 69 66 0d 09 09 2e 22 | 20 64 6f 5f 66 65 74 63 | if...."| do_fetc|
|00001280| 68 20 2d 20 6f 70 6e 64 | 31 3a 20 22 20 63 72 20 |h - opnd|1: " cr |
|00001290| 70 72 69 6e 74 3a 20 6f | 70 6e 64 31 0d 09 74 68 |print: o|pnd1..th|
|000012a0| 65 6e 0d 0d 09 72 65 66 | 74 79 70 65 3a 20 6f 70 |en...ref|type: op|
|000012b0| 6e 64 31 20 20 67 70 72 | 4e 61 6d 65 52 65 66 20 |nd1 gpr|NameRef |
|000012c0| 3d 0d 09 49 46 09 67 70 | 72 52 65 66 20 3e 72 65 |=..IF.gp|rRef >re|
|000012d0| 66 54 79 70 65 3a 20 6f | 70 6e 64 31 0d 09 09 6f |fType: o|pnd1...o|
|000012e0| 70 6e 64 31 20 70 75 73 | 68 20 20 45 58 49 54 0d |pnd1 pus|h EXIT.|
|000012f0| 09 54 48 45 4e 0d 0d 09 | 61 64 64 72 3a 20 6f 70 |.THEN...|addr: op|
|00001300| 6e 64 31 20 20 67 65 74 | 5f 74 6f 5f 67 70 72 3f |nd1 get|_to_gpr?|
|00001310| 20 64 72 6f 70 0d 0d 09 | 63 6c 65 61 72 3a 20 74 | drop...|clear: t|
|00001320| 68 65 4f 44 0d 09 6f 74 | 46 65 74 63 68 20 70 75 |heOD..ot|Fetch pu|
|00001330| 74 3a 20 69 76 61 72 3e | 20 6f 70 54 79 70 65 09 |t: ivar>| opType.|
|00001340| 69 6e 20 74 68 65 4f 44 | 0d 09 6c 65 6e 09 09 70 |in theOD|..len..p|
|00001350| 75 74 3a 20 69 76 61 72 | 3e 20 6c 65 6e 09 09 69 |ut: ivar|> len..i|
|00001360| 6e 20 74 68 65 4f 44 0d | 09 66 6c 61 67 73 09 70 |n theOD.|.flags.p|
|00001370| 75 74 3a 20 69 76 61 72 | 3e 20 66 6c 61 67 73 09 |ut: ivar|> flags.|
|00001380| 69 6e 20 74 68 65 4f 44 | 0d 0d 09 67 70 72 3a 20 |in theOD|...gpr: |
|00001390| 6f 70 6e 64 31 09 64 75 | 70 20 2d 3e 20 72 65 67 |opnd1.du|p -> reg|
|000013a0| 23 09 3e 41 67 70 72 3a | 20 74 68 65 4f 44 0d 09 |#.>Agpr:| theOD..|
|000013b0| 30 09 09 09 09 09 09 3e | 42 6c 69 74 3a 20 74 68 |0......>|Blit: th|
|000013c0| 65 4f 44 0d 0d 09 63 61 | 73 63 61 64 65 26 6d 61 |eOD...ca|scade&ma|
|000013d0| 74 63 68 3f 0d 09 0d 09 | 64 65 62 75 67 3f 20 69 |tch?....|debug? i|
|000013e0| 66 0d 09 09 2e 22 20 6d | 61 74 63 68 65 64 3f 20 |f...." m|atched? |
|000013f0| 22 20 64 75 70 20 69 66 | 20 2e 22 20 79 65 73 22 |" dup if| ." yes"|
|00001400| 20 65 6c 73 65 20 2e 22 | 20 6e 6f 22 20 74 68 65 | else ."| no" the|
|00001410| 6e 20 63 72 0d 09 74 68 | 65 6e 0d 09 0d 09 4e 49 |n cr..th|en....NI|
|00001420| 46 09 31 20 72 65 73 75 | 6c 74 73 0d 09 09 74 68 |F.1 resu|lts...th|
|00001430| 65 4f 44 20 63 6f 70 79 | 57 69 74 68 6f 75 74 43 |eOD copy|WithoutC|
|00001440| 44 50 3a 20 47 50 52 73 | 0d 09 09 63 6f 6d 70 69 |DP: GPRs|...compi|
|00001450| 6c 65 3a 20 47 50 52 73 | 0d 09 09 66 72 65 65 3a |le: GPRs|...free:|
|00001460| 20 6f 70 6e 64 31 0d 09 | 54 48 45 4e 0d 0d 09 72 | opnd1..|THEN...r|
|00001470| 65 73 31 20 70 75 73 68 | 0d 3b 0d 0d 0d 3a 20 44 |es1 push|.;...: D|
|00001480| 4f 5f 46 50 5f 46 45 54 | 43 48 20 20 7b 20 6c 65 |O_FP_FET|CH { le|
|00001490| 6e 20 5c 20 72 65 67 23 | 20 2d 2d 20 7d 0d 09 31 |n \ reg#| -- }..1|
|000014a0| 20 6f 70 65 72 61 6e 64 | 73 0d 0d 09 64 65 62 75 | operand|s...debu|
|000014b0| 67 3f 20 69 66 0d 09 09 | 2e 22 20 64 6f 5f 46 50 |g? if...|." do_FP|
|000014c0| 5f 66 65 74 63 68 20 2d | 20 6f 70 6e 64 31 3a 20 |_fetch -| opnd1: |
|000014d0| 22 20 63 72 20 70 72 69 | 6e 74 3a 20 6f 70 6e 64 |" cr pri|nt: opnd|
|000014e0| 31 0d 09 74 68 65 6e 0d | 0d 09 72 65 66 74 79 70 |1..then.|..reftyp|
|000014f0| 65 3a 20 6f 70 6e 64 31 | 20 20 66 70 72 4e 61 6d |e: opnd1| fprNam|
|00001500| 65 52 65 66 20 3d 0d 09 | 49 46 09 66 70 72 52 65 |eRef =..|IF.fprRe|
|00001510| 66 20 3e 72 65 66 54 79 | 70 65 3a 20 6f 70 6e 64 |f >refTy|pe: opnd|
|00001520| 31 0d 09 09 6f 70 6e 64 | 31 20 66 70 75 73 68 20 |1...opnd|1 fpush |
|00001530| 20 45 58 49 54 0d 09 54 | 48 45 4e 0d 0d 09 61 64 | EXIT..T|HEN...ad|
|00001540| 64 72 3a 20 6f 70 6e 64 | 31 20 20 67 65 74 5f 74 |dr: opnd|1 get_t|
|00001550| 6f 5f 67 70 72 3f 20 64 | 72 6f 70 0d 0d 09 63 6c |o_gpr? d|rop...cl|
|00001560| 65 61 72 3a 20 74 68 65 | 4f 44 0d 09 6f 74 46 50 |ear: the|OD..otFP|
|00001570| 66 65 74 63 68 09 70 75 | 74 3a 20 69 76 61 72 3e |fetch.pu|t: ivar>|
|00001580| 20 6f 70 54 79 70 65 20 | 69 6e 20 74 68 65 4f 44 | opType |in theOD|
|00001590| 0d 09 6c 65 6e 09 09 09 | 70 75 74 3a 20 69 76 61 |..len...|put: iva|
|000015a0| 72 3e 20 6c 65 6e 20 69 | 6e 20 74 68 65 4f 44 0d |r> len i|n theOD.|
|000015b0| 0d 09 67 70 72 3a 20 6f | 70 6e 64 31 09 64 75 70 |..gpr: o|pnd1.dup|
|000015c0| 20 2d 3e 20 72 65 67 23 | 09 3e 41 67 70 72 3a 20 | -> reg#|.>Agpr: |
|000015d0| 74 68 65 4f 44 0d 09 30 | 09 09 09 09 09 09 3e 42 |theOD..0|......>B|
|000015e0| 6c 69 74 3a 20 74 68 65 | 4f 44 0d 0d 09 63 61 73 |lit: the|OD...cas|
|000015f0| 63 61 64 65 26 6d 61 74 | 63 68 3f 0d 09 0d 09 64 |cade&mat|ch?....d|
|00001600| 65 62 75 67 3f 20 69 66 | 0d 09 09 2e 22 20 6d 61 |ebug? if|...." ma|
|00001610| 74 63 68 65 64 3f 20 22 | 20 64 75 70 20 69 66 20 |tched? "| dup if |
|00001620| 2e 22 20 79 65 73 22 20 | 65 6c 73 65 20 2e 22 20 |." yes" |else ." |
|00001630| 6e 6f 22 20 74 68 65 6e | 20 63 72 0d 09 74 68 65 |no" then| cr..the|
|00001640| 6e 0d 0d 09 4e 49 46 09 | 31 20 66 72 65 73 75 6c |n...NIF.|1 fresul|
|00001650| 74 73 0d 09 09 74 68 65 | 4f 44 20 63 6f 70 79 57 |ts...the|OD copyW|
|00001660| 69 74 68 6f 75 74 43 44 | 50 3a 20 46 50 52 73 0d |ithoutCD|P: FPRs.|
|00001670| 09 09 63 6f 6d 70 69 6c | 65 3a 20 46 50 52 73 0d |..compil|e: FPRs.|
|00001680| 09 09 66 72 65 65 3a 20 | 6f 70 6e 64 31 0d 09 54 |..free: |opnd1..T|
|00001690| 48 45 4e 0d 09 72 65 73 | 31 20 66 70 75 73 68 0d |HEN..res|1 fpush.|
|000016a0| 3b 0d 0d 0d 28 2a 20 52 | 45 43 4f 52 44 5f 47 50 |;...(* R|ECORD_GP|
|000016b0| 52 5f 53 54 4f 52 45 20 | 70 75 74 73 20 61 6e 20 |R_STORE |puts an |
|000016c0| 65 6e 74 72 79 20 66 6f | 72 20 74 68 65 20 70 61 |entry fo|r the pa|
|000016d0| 73 73 65 64 2d 69 6e 20 | 4f 44 20 69 6e 20 73 74 |ssed-in |OD in st|
|000016e0| 6f 72 65 64 5f 47 50 52 | 73 2c 0d 69 6e 20 63 61 |ored_GPR|s,.in ca|
|000016f0| 73 65 20 77 65 20 63 61 | 6e 20 6f 70 74 69 6d 69 |se we ca|n optimi|
|00001700| 7a 65 20 6f 75 74 20 61 | 20 73 75 62 73 65 71 75 |ze out a| subsequ|
|00001710| 65 6e 74 20 66 65 74 63 | 68 20 6f 66 20 74 68 65 |ent fetc|h of the|
|00001720| 20 73 61 6d 65 20 6c 6f | 63 61 74 69 6f 6e 0d 28 | same lo|cation.(|
|00001730| 69 2e 65 2e 20 69 6e 20 | 74 68 65 20 63 61 73 65 |i.e. in |the case|
|00001740| 20 77 68 65 72 65 20 74 | 68 65 20 73 74 6f 72 65 | where t|he store|
|00001750| 64 20 76 61 6c 75 65 20 | 69 73 20 73 74 69 6c 6c |d value |is still|
|00001760| 20 73 69 74 74 69 6e 67 | 20 69 6e 20 74 68 65 20 | sitting| in the |
|00001770| 72 65 67 0d 77 65 20 73 | 74 6f 72 65 64 20 69 74 |reg.we s|tored it|
|00001780| 20 66 72 6f 6d 29 2e 0d | 0d 57 65 20 75 73 65 64 | from)..|.We used|
|00001790| 20 74 6f 20 73 69 6d 70 | 6c 79 20 63 68 61 6e 67 | to simp|ly chang|
|000017a0| 65 20 74 68 65 20 6f 70 | 20 69 6e 20 74 68 65 20 |e the op| in the |
|000017b0| 73 74 6f 72 65 64 20 47 | 50 52 20 74 6f 20 61 20 |stored G|PR to a |
|000017c0| 66 65 74 63 68 2c 20 73 | 6f 20 69 74 0d 63 6f 75 |fetch, s|o it.cou|
|000017d0| 6c 64 20 6d 61 74 63 68 | 20 61 6e 79 20 73 75 62 |ld match| any sub|
|000017e0| 73 65 71 75 65 6e 74 20 | 66 65 74 63 68 20 6f 66 |sequent |fetch of|
|000017f0| 20 74 68 61 74 20 6c 6f | 63 61 74 69 6f 6e 2e 20 | that lo|cation. |
|00001800| 20 42 75 74 20 69 74 27 | 73 20 62 65 74 74 65 72 | But it'|s better|
|00001810| 0d 74 6f 20 6b 65 65 70 | 20 61 20 73 65 70 61 72 |.to keep| a separ|
|00001820| 61 74 65 20 72 65 63 6f | 72 64 20 69 6e 20 73 74 |ate reco|rd in st|
|00001830| 6f 72 65 64 5f 47 50 52 | 73 2c 20 61 6e 64 20 63 |ored_GPR|s, and c|
|00001840| 68 65 63 6b 20 74 68 65 | 72 65 20 66 6f 72 20 61 |heck the|re for a|
|00001850| 20 6d 61 74 63 68 2e 0d | 54 68 69 73 20 68 61 73 | match..|This has|
|00001860| 20 74 68 65 20 73 61 6d | 65 20 65 66 66 65 63 74 | the sam|e effect|
|00001870| 2c 20 62 75 74 20 6d 65 | 61 6e 73 20 77 65 20 64 |, but me|ans we d|
|00001880| 6f 6e 27 74 20 68 61 76 | 65 20 74 6f 20 63 6c 6f |on't hav|e to clo|
|00001890| 62 62 65 72 20 74 68 65 | 20 70 72 65 76 0d 69 6e |bber the| prev.in|
|000018a0| 66 6f 20 69 6e 20 74 68 | 65 20 72 65 67 27 73 20 |fo in th|e reg's |
|000018b0| 4f 44 20 2d 20 77 65 20 | 6d 69 67 68 74 20 62 65 |OD - we |might be|
|000018c0| 20 61 62 6c 65 20 74 6f | 20 6d 61 74 63 68 20 6f | able to| match o|
|000018d0| 6e 20 74 68 65 20 6f 70 | 20 74 68 61 74 0d 67 65 |n the op| that.ge|
|000018e0| 6e 65 72 61 74 65 64 20 | 74 68 65 20 76 61 6c 75 |nerated |the valu|
|000018f0| 65 2e 20 20 45 76 65 6e | 20 69 66 20 74 68 65 20 |e. Even| if the |
|00001900| 47 50 52 27 73 20 74 79 | 70 65 20 69 73 20 6f 74 |GPR's ty|pe is ot|
|00001910| 55 6e 6b 6e 6f 77 6e 2c | 20 61 6c 74 68 6f 75 67 |Unknown,| althoug|
|00001920| 68 20 0d 77 65 20 77 6f | 6e 27 74 20 62 65 20 61 |h .we wo|n't be a|
|00001930| 62 6c 65 20 74 6f 20 6d | 61 74 63 68 20 6f 6e 20 |ble to m|atch on |
|00001940| 69 74 2c 20 77 65 20 73 | 74 69 6c 6c 20 6d 69 67 |it, we s|till mig|
|00001950| 68 74 20 62 65 20 61 62 | 6c 65 20 74 6f 20 6f 70 |ht be ab|le to op|
|00001960| 74 69 6d 69 7a 65 0d 6f | 75 74 20 61 20 73 75 62 |timize.o|ut a sub|
|00001970| 73 65 71 75 65 6e 74 20 | 66 65 74 63 68 20 6f 66 |sequent |fetch of|
|00001980| 20 74 68 65 20 73 61 6d | 65 20 6c 6f 63 61 74 69 | the sam|e locati|
|00001990| 6f 6e 20 77 65 27 72 65 | 20 73 74 6f 72 69 6e 67 |on we're| storing|
|000019a0| 20 69 6e 74 6f 2e 20 20 | 53 6f 0d 77 65 20 63 68 | into. |So.we ch|
|000019b0| 61 6e 67 65 20 74 68 65 | 20 74 79 70 65 20 74 6f |ange the| type to|
|000019c0| 20 6f 74 55 6e 6b 53 74 | 6f 72 65 64 2c 20 77 68 | otUnkSt|ored, wh|
|000019d0| 69 63 68 20 77 69 6c 6c | 20 6d 65 61 6e 20 77 65 |ich will| mean we|
|000019e0| 20 68 61 6e 67 20 6f 6e | 20 74 6f 20 69 74 0d 61 | hang on| to it.a|
|000019f0| 20 62 69 74 20 6c 6f 6e | 67 65 72 20 74 68 61 6e | bit lon|ger than|
|00001a00| 20 6f 74 55 6e 6b 6e 6f | 77 6e 20 28 77 68 69 63 | otUnkno|wn (whic|
|00001a10| 68 20 61 72 65 20 75 70 | 20 66 6f 72 20 67 72 61 |h are up| for gra|
|00001a20| 62 73 20 61 73 20 73 6f | 6f 6e 20 61 73 20 77 65 |bs as so|on as we|
|00001a30| 20 6e 65 65 64 0d 74 6f | 20 61 6c 6c 6f 63 61 74 | need.to| allocat|
|00001a40| 65 20 61 20 66 72 65 65 | 20 72 65 67 29 2e 0d 09 |e a free| reg)...|
|00001a50| 0d 57 65 20 61 6c 73 6f | 20 63 6c 6f 62 62 65 72 |.We also| clobber|
|00001a60| 20 61 6e 79 20 66 65 74 | 63 68 20 6f 66 20 74 68 | any fet|ch of th|
|00001a70| 65 20 74 61 72 67 65 74 | 20 6c 6f 63 61 74 69 6f |e target| locatio|
|00001a80| 6e 20 74 68 61 74 20 6d | 69 67 68 74 0d 73 74 69 |n that m|ight.sti|
|00001a90| 6c 6c 20 62 65 20 73 69 | 74 74 69 6e 67 20 61 72 |ll be si|tting ar|
|00001aa0| 6f 75 6e 64 20 69 6e 20 | 61 20 72 65 67 2c 20 73 |ound in |a reg, s|
|00001ab0| 69 6e 63 65 20 74 68 61 | 74 20 76 61 6c 75 65 20 |ince tha|t value |
|00001ac0| 69 73 6e 27 74 20 76 61 | 6c 69 64 20 61 6e 79 20 |isn't va|lid any |
|00001ad0| 6d 6f 72 65 2e 0d 0d 53 | 70 65 63 69 61 6c 20 6e |more...S|pecial n|
|00001ae0| 6f 74 65 3a 20 77 65 20 | 64 6f 6e 27 74 20 72 65 |ote: we |don't re|
|00001af0| 63 6f 72 64 20 70 61 72 | 74 69 61 6c 20 77 6f 72 |cord par|tial wor|
|00001b00| 64 20 73 74 6f 72 65 73 | 2c 20 73 69 6e 63 65 20 |d stores|, since |
|00001b10| 69 6e 20 74 68 65 0d 67 | 65 6e 65 72 61 6c 20 63 |in the.g|eneral c|
|00001b20| 61 73 65 2c 20 61 20 66 | 65 74 63 68 20 6f 66 20 |ase, a f|etch of |
|00001b30| 74 68 61 74 20 6c 6f 63 | 61 74 69 6f 6e 20 57 4f |that loc|ation WO|
|00001b40| 4e 27 54 20 62 65 20 65 | 71 75 61 6c 20 74 6f 20 |N'T be e|qual to |
|00001b50| 74 68 65 0d 72 65 67 20 | 77 65 20 73 74 6f 72 65 |the.reg |we store|
|00001b60| 64 20 66 72 6f 6d 2c 20 | 61 6e 64 20 69 74 27 73 |d from, |and it's|
|00001b70| 20 6e 6f 74 20 77 6f 72 | 74 68 20 74 72 79 69 6e | not wor|th tryin|
|00001b80| 67 20 74 6f 20 73 6f 72 | 74 20 74 68 69 73 20 6f |g to sor|t this o|
|00001b90| 75 74 2e 0d 2a 29 0d 0d | 0d 4f 44 09 73 74 6f 72 |ut..*)..|.OD.stor|
|00001ba0| 65 64 4f 44 0d 0d 6f 62 | 6a 50 74 72 20 77 68 69 |edOD..ob|jPtr whi|
|00001bb0| 63 68 52 65 67 73 09 63 | 6c 61 73 73 5f 69 73 20 |chRegs.c|lass_is |
|00001bc0| 4f 44 73 5f 63 6c 61 73 | 73 0d 6f 62 6a 50 74 72 |ODs_clas|s.objPtr|
|00001bd0| 20 73 74 6f 72 65 64 5f | 72 65 67 73 09 63 6c 61 | stored_|regs.cla|
|00001be0| 73 73 5f 69 73 20 4f 44 | 73 5f 63 6c 61 73 73 0d |ss_is OD|s_class.|
|00001bf0| 0d 3a 20 52 45 43 4f 52 | 44 5f 52 45 47 5f 53 54 |.: RECOR|D_REG_ST|
|00001c00| 4f 52 45 20 20 7b 20 5e | 4f 44 20 5c 20 72 65 67 |ORE { ^|OD \ reg|
|00001c10| 23 20 2d 2d 20 7d 0d 0d | 09 5e 4f 44 20 20 63 6f |# -- }..|.^OD co|
|00001c20| 70 79 4f 44 3a 20 73 74 | 6f 72 65 64 4f 44 0d 0d |pyOD: st|oredOD..|
|00001c30| 09 64 65 62 75 67 3f 20 | 69 66 0d 09 09 2e 22 20 |.debug? |if...." |
|00001c40| 72 65 63 6f 72 64 69 6e | 67 20 73 74 6f 72 65 20 |recordin|g store |
|00001c50| 6f 66 20 22 20 70 72 69 | 6e 74 3a 20 73 74 6f 72 |of " pri|nt: stor|
|00001c60| 65 64 4f 44 0d 09 74 68 | 65 6e 0d 0d 09 72 65 67 |edOD..th|en...reg|
|00001c70| 3a 20 6f 70 6e 64 32 20 | 20 2d 3e 20 72 65 67 23 |: opnd2 | -> reg#|
|00001c80| 09 09 09 5c 20 74 68 65 | 20 72 65 67 20 77 65 27 |...\ the| reg we'|
|00001c90| 76 65 20 73 74 6f 72 65 | 64 0d 09 72 65 67 23 20 |ve store|d..reg# |
|00001ca0| 73 65 6c 65 63 74 3a 20 | 77 68 69 63 68 52 65 67 |select: |whichReg|
|00001cb0| 73 0d 09 43 44 50 20 34 | 2d 20 20 6d 61 72 6b 5f |s..CDP 4|- mark_|
|00001cc0| 75 73 65 3a 20 77 68 69 | 63 68 52 65 67 73 0d 0d |use: whi|chRegs..|
|00001cd0| 09 67 65 74 3a 20 69 76 | 61 72 3e 20 6c 65 6e 20 |.get: iv|ar> len |
|00001ce0| 69 6e 20 73 74 6f 72 65 | 64 4f 44 20 20 34 20 3c |in store|dOD 4 <|
|00001cf0| 0d 09 49 46 09 64 65 62 | 75 67 3f 20 69 66 0d 09 |..IF.deb|ug? if..|
|00001d00| 09 09 2e 22 20 6e 6f 20 | 2d 20 6c 65 6e 20 3c 20 |..." no |- len < |
|00001d10| 34 20 2d 20 6e 6f 74 20 | 72 65 63 6f 72 64 69 6e |4 - not |recordin|
|00001d20| 67 22 0d 09 09 74 68 65 | 6e 0d 09 09 45 58 49 54 |g"...the|n...EXIT|
|00001d30| 0d 09 54 48 45 4e 0d 0d | 09 72 65 67 23 20 73 65 |..THEN..|.reg# se|
|00001d40| 6c 65 63 74 3a 20 73 74 | 6f 72 65 64 5f 72 65 67 |lect: st|ored_reg|
|00001d50| 73 0d 0d 09 5e 4f 44 20 | 20 63 6f 70 79 4f 44 3a |s...^OD | copyOD:|
|00001d60| 20 73 74 6f 72 65 64 5f | 72 65 67 73 0d 0d 09 67 | stored_|regs...g|
|00001d70| 65 74 3a 20 69 76 61 72 | 3e 20 6f 70 43 44 50 09 |et: ivar|> opCDP.|
|00001d80| 09 69 6e 20 77 68 69 63 | 68 52 65 67 73 0d 09 70 |.in whic|hRegs..p|
|00001d90| 75 74 3a 20 69 76 61 72 | 3e 20 6c 61 73 74 52 65 |ut: ivar|> lastRe|
|00001da0| 66 43 44 50 09 69 6e 20 | 73 74 6f 72 65 64 5f 72 |fCDP.in |stored_r|
|00001db0| 65 67 73 0d 0d 09 43 44 | 50 20 34 2d 20 20 70 75 |egs...CD|P 4- pu|
|00001dc0| 74 3a 20 69 76 61 72 3e | 20 6c 61 73 74 52 65 66 |t: ivar>| lastRef|
|00001dd0| 43 44 50 20 69 6e 20 77 | 68 69 63 68 52 65 67 73 |CDP in w|hichRegs|
|00001de0| 0d 09 67 65 74 3a 20 69 | 76 61 72 3e 20 6f 70 54 |..get: i|var> opT|
|00001df0| 79 70 65 20 69 6e 20 77 | 68 69 63 68 52 65 67 73 |ype in w|hichRegs|
|00001e00| 20 20 6f 74 55 6e 6b 6e | 6f 77 6e 20 3d 0d 09 49 | otUnkn|own =..I|
|00001e10| 46 20 20 6f 74 55 6e 6b | 53 74 6f 72 65 64 20 20 |F otUnk|Stored |
|00001e20| 70 75 74 3a 20 69 76 61 | 72 3e 20 6f 70 54 79 70 |put: iva|r> opTyp|
|00001e30| 65 20 69 6e 20 77 68 69 | 63 68 52 65 67 73 20 20 |e in whi|chRegs |
|00001e40| 54 48 45 4e 0d 0d 28 2a | 0d 09 73 74 6f 72 65 64 |THEN..(*|..stored|
|00001e50| 4f 44 20 66 61 6c 73 65 | 20 20 6d 61 74 63 68 3f |OD false| match?|
|00001e60| 3a 20 77 68 69 63 68 52 | 65 67 73 0d 09 49 46 09 |: whichR|egs..IF.|
|00001e70| 6f 74 55 6e 6b 6e 6f 77 | 6e 20 20 70 75 74 3a 20 |otUnknow|n put: |
|00001e80| 69 76 61 72 3e 20 6f 70 | 54 79 70 65 20 69 6e 20 |ivar> op|Type in |
|00001e90| 77 68 69 63 68 52 65 67 | 73 0d 09 09 6e 6f 54 79 |whichReg|s...noTy|
|00001ea0| 70 65 09 20 20 20 70 75 | 74 3a 20 69 76 61 72 3e |pe. pu|t: ivar>|
|00001eb0| 20 69 6e 73 74 72 6e 54 | 79 70 65 20 69 6e 20 77 | instrnT|ype in w|
|00001ec0| 68 69 63 68 52 65 67 73 | 0d 09 09 61 64 64 72 3a |hichRegs|...addr:|
|00001ed0| 20 69 76 61 72 3e 20 6d | 79 52 65 66 20 69 6e 20 | ivar> m|yRef in |
|00001ee0| 77 68 69 63 68 52 65 67 | 73 20 20 2d 3e 3a 20 74 |whichReg|s ->: t|
|00001ef0| 6d 70 52 65 66 31 0d 09 | 09 34 20 2d 2d 3e 20 43 |mpRef1..|.4 --> C|
|00001f00| 44 50 0d 09 09 74 6d 70 | 52 65 66 31 20 72 65 67 |DP...tmp|Ref1 reg|
|00001f10| 5f 63 68 61 6e 67 65 64 | 0d 09 09 34 20 2b 2b 3e |_changed|...4 ++>|
|00001f20| 20 43 44 50 0d 09 09 43 | 44 50 20 34 2d 20 20 70 | CDP...C|DP 4- p|
|00001f30| 75 74 3a 20 69 76 61 72 | 3e 20 76 61 6c 69 64 54 |ut: ivar|> validT|
|00001f40| 69 6c 6c 43 44 50 20 69 | 6e 20 77 68 69 63 68 52 |illCDP i|n whichR|
|00001f50| 65 67 73 0d 09 09 64 65 | 62 75 67 3f 20 69 66 0d |egs...de|bug? if.|
|00001f60| 09 09 09 2e 22 20 69 6e | 76 61 6c 69 64 61 74 65 |...." in|validate|
|00001f70| 64 20 65 61 72 6c 69 65 | 72 20 66 65 74 63 68 20 |d earlie|r fetch |
|00001f80| 6f 66 20 73 61 6d 65 20 | 6c 6f 63 61 74 69 6f 6e |of same |location|
|00001f90| 3a 22 09 70 72 69 6e 74 | 3a 20 77 68 69 63 68 52 |:".print|: whichR|
|00001fa0| 65 67 73 20 20 63 72 0d | 09 09 74 68 65 6e 0d 09 |egs cr.|..then..|
|00001fb0| 54 48 45 4e 0d 2a 29 0d | 0d 09 72 65 67 23 20 73 |THEN.*).|..reg# s|
|00001fc0| 65 6c 65 63 74 3a 20 77 | 68 69 63 68 52 65 67 73 |elect: w|hichRegs|
|00001fd0| 0d 09 0d 09 64 65 62 75 | 67 3f 20 69 66 0d 09 09 |....debu|g? if...|
|00001fe0| 2e 22 20 75 70 64 61 74 | 65 64 20 73 74 6f 72 65 |." updat|ed store|
|00001ff0| 64 5f 72 65 67 73 3a 22 | 20 63 72 20 70 72 69 6e |d_regs:"| cr prin|
|00002000| 74 61 6c 6c 3a 20 73 74 | 6f 72 65 64 5f 72 65 67 |tall: st|ored_reg|
|00002010| 73 20 63 72 0d 09 74 68 | 65 6e 0d 3b 0d 0d 0d 3a |s cr..th|en.;...:|
|00002020| 20 52 45 43 4f 52 44 5f | 47 50 52 5f 53 54 4f 52 | RECORD_|GPR_STOR|
|00002030| 45 0d 09 47 50 52 73 20 | 2d 3e 20 77 68 69 63 68 |E..GPRs |-> which|
|00002040| 52 65 67 73 20 20 73 74 | 6f 72 65 64 5f 47 50 52 |Regs st|ored_GPR|
|00002050| 73 20 2d 3e 20 73 74 6f | 72 65 64 5f 72 65 67 73 |s -> sto|red_regs|
|00002060| 0d 09 72 65 63 6f 72 64 | 5f 72 65 67 5f 73 74 6f |..record|_reg_sto|
|00002070| 72 65 0d 3b 0d 0d 3a 20 | 52 45 43 4f 52 44 5f 46 |re.;..: |RECORD_F|
|00002080| 50 52 5f 53 54 4f 52 45 | 0d 09 46 50 52 73 20 2d |PR_STORE|..FPRs -|
|00002090| 3e 20 77 68 69 63 68 52 | 65 67 73 20 20 73 74 6f |> whichR|egs sto|
|000020a0| 72 65 64 5f 46 50 52 73 | 20 2d 3e 20 73 74 6f 72 |red_FPRs| -> stor|
|000020b0| 65 64 5f 72 65 67 73 0d | 09 72 65 63 6f 72 64 5f |ed_regs.|.record_|
|000020c0| 72 65 67 5f 73 74 6f 72 | 65 0d 3b 0d 0d 28 2a 0d |reg_stor|e.;..(*.|
|000020d0| 3a 20 52 45 43 4f 52 44 | 5f 46 50 52 5f 53 54 4f |: RECORD|_FPR_STO|
|000020e0| 52 45 20 20 7b 20 5e 4f | 44 20 5c 20 72 65 67 23 |RE { ^O|D \ reg#|
|000020f0| 20 2d 2d 20 7d 0d 09 46 | 50 52 3a 20 6f 70 6e 64 | -- }..F|PR: opnd|
|00002100| 32 20 20 73 65 6c 65 63 | 74 3a 20 73 74 6f 72 65 |2 selec|t: store|
|00002110| 64 5f 46 50 52 73 0d 09 | 74 68 65 4f 44 20 63 6f |d_FPRs..|theOD co|
|00002120| 70 79 57 69 74 68 43 44 | 50 3a 20 73 74 6f 72 65 |pyWithCD|P: store|
|00002130| 64 5f 46 50 52 73 0d 09 | 67 65 74 3a 20 69 76 61 |d_FPRs..|get: iva|
|00002140| 72 3e 20 6f 70 43 44 50 | 09 09 69 6e 20 46 50 52 |r> opCDP|..in FPR|
|00002150| 73 0d 09 70 75 74 3a 20 | 69 76 61 72 3e 20 6c 61 |s..put: |ivar> la|
|00002160| 73 74 52 65 66 43 44 50 | 09 69 6e 20 73 74 6f 72 |stRefCDP|.in stor|
|00002170| 65 64 5f 46 50 52 73 0d | 3b 0d 2a 29 0d 0d 3a 20 |ed_FPRs.|;.*)..: |
|00002180| 43 4f 4d 50 49 4c 45 5f | 54 48 45 5f 53 54 4f 52 |COMPILE_|THE_STOR|
|00002190| 45 20 20 7b 20 5c 20 67 | 70 72 23 20 2d 2d 20 7d |E { \ g|pr# -- }|
|000021a0| 0d 09 41 67 70 72 3a 20 | 74 68 65 4f 44 20 20 2d |..Agpr: |theOD -|
|000021b0| 3e 20 67 70 72 23 0d 0d | 09 72 65 66 54 79 70 65 |> gpr#..|.refType|
|000021c0| 3a 20 6f 70 6e 64 32 0d | 09 43 41 53 45 5b 09 67 |: opnd2.|.CASE[.g|
|000021d0| 70 72 52 65 66 09 5d 3d | 3e 09 09 72 65 67 3a 20 |prRef.]=|>..reg: |
|000021e0| 6f 70 6e 64 32 20 73 65 | 6c 65 63 74 3a 20 47 50 |opnd2 se|lect: GP|
|000021f0| 52 73 0d 09 09 09 09 09 | 09 09 43 44 50 20 70 75 |Rs......|..CDP pu|
|00002200| 74 3a 20 69 76 61 72 3e | 20 6c 61 73 74 52 65 66 |t: ivar>| lastRef|
|00002210| 43 44 50 20 69 6e 20 47 | 50 52 73 0d 09 09 09 09 |CDP in G|PRs.....|
|00002220| 09 09 09 0d 09 09 5b 09 | 66 70 72 52 65 66 09 5d |......[.|fprRef.]|
|00002230| 3d 3e 09 09 72 65 67 3a | 20 6f 70 6e 64 32 20 73 |=>..reg:| opnd2 s|
|00002240| 65 6c 65 63 74 3a 20 46 | 50 52 73 0d 09 09 09 09 |elect: F|PRs.....|
|00002250| 09 09 09 43 44 50 20 70 | 75 74 3a 20 69 76 61 72 |...CDP p|ut: ivar|
|00002260| 3e 20 6c 61 73 74 52 65 | 66 43 44 50 20 69 6e 20 |> lastRe|fCDP in |
|00002270| 46 50 52 73 0d 0d 09 09 | 20 20 44 45 46 41 55 4c |FPRs....| DEFAUL|
|00002280| 54 3d 3e 09 09 09 64 72 | 6f 70 0d 09 5d 43 41 53 |T=>...dr|op..]CAS|
|00002290| 45 0d 0d 09 67 70 72 23 | 20 31 33 20 31 36 20 77 |E...gpr#| 13 16 w|
|000022a0| 69 74 68 69 6e 3f 0d 09 | 73 77 61 70 20 6f 62 6a |ithin?..|swap obj|
|000022b0| 5f 62 61 73 65 5f 72 65 | 67 20 3d 20 6f 72 0d 09 |_base_re|g = or..|
|000022c0| 72 65 66 54 79 70 65 3a | 20 69 76 61 72 3e 20 42 |refType:| ivar> B|
|000022d0| 5f 6f 70 6e 64 20 69 6e | 20 74 68 65 4f 44 20 20 |_opnd in| theOD |
|000022e0| 6c 69 74 52 65 66 20 3d | 20 20 61 6e 64 0d 0d 09 |litRef =| and...|
|000022f0| 4e 49 46 09 0d 09 09 64 | 65 62 75 67 3f 20 69 66 |NIF....d|ebug? if|
|00002300| 0d 09 09 09 2e 22 20 69 | 74 27 73 20 61 20 63 6f |....." i|t's a co|
|00002310| 6d 70 75 74 65 64 20 73 | 74 6f 72 65 22 20 63 72 |mputed s|tore" cr|
|00002320| 20 20 70 72 69 6e 74 3a | 20 74 68 65 4f 44 20 63 | print:| theOD c|
|00002330| 72 0d 09 09 09 2e 22 20 | 63 75 72 72 65 6e 74 20 |r....." |current |
|00002340| 47 50 52 20 22 20 63 75 | 72 72 65 6e 74 3a 20 67 |GPR " cu|rrent: g|
|00002350| 70 72 73 20 2e 20 63 72 | 0d 09 09 74 68 65 6e 0d |prs . cr|...then.|
|00002360| 09 09 66 72 65 65 3a 20 | 6f 70 6e 64 32 09 09 5c |..free: |opnd2..\|
|00002370| 20 66 72 65 65 20 74 68 | 65 20 64 61 74 61 20 72 | free th|e data r|
|00002380| 65 67 20 2d 20 66 72 65 | 65 69 6e 67 20 69 74 20 |eg - fre|eing it |
|00002390| 65 61 72 6c 79 20 69 73 | 20 73 61 66 65 2c 0d 09 |early is| safe,..|
|000023a0| 09 09 09 09 09 5c 20 20 | 61 6e 64 20 6c 65 74 73 |.....\ |and lets|
|000023b0| 20 6d 61 6b 65 5f 66 65 | 74 63 68 65 73 5f 75 6e | make_fe|tches_un|
|000023c0| 6b 6e 6f 77 6e 20 6d 61 | 72 6b 20 74 68 65 20 72 |known ma|rk the r|
|000023d0| 65 67 20 61 73 0d 09 09 | 09 09 09 09 5c 20 20 22 |eg as...|....\ "|
|000023e0| 65 6d 70 74 79 22 20 73 | 6f 20 69 74 20 63 61 6e |empty" s|o it can|
|000023f0| 20 62 65 20 72 65 61 6c | 6c 6f 63 61 74 65 64 0d | be real|located.|
|00002400| 0d 09 09 6d 61 6b 65 5f | 66 65 74 63 68 65 73 5f |...make_|fetches_|
|00002410| 75 6e 6b 6e 6f 77 6e 3a | 20 47 50 52 73 0d 09 09 |unknown:| GPRs...|
|00002420| 6d 61 6b 65 5f 66 65 74 | 63 68 65 73 5f 75 6e 6b |make_fet|ches_unk|
|00002430| 6e 6f 77 6e 3a 20 46 50 | 52 73 0d 09 09 69 6e 76 |nown: FP|Rs...inv|
|00002440| 61 6c 69 64 61 74 65 5f | 61 6c 6c 3a 20 73 74 6f |alidate_|all: sto|
|00002450| 72 65 64 5f 47 50 52 73 | 0d 09 09 69 6e 76 61 6c |red_GPRs|...inval|
|00002460| 69 64 61 74 65 5f 61 6c | 6c 3a 20 73 74 6f 72 65 |idate_al|l: store|
|00002470| 64 5f 46 50 52 73 0d 09 | 20 09 63 6f 6d 70 69 6c |d_FPRs..| .compil|
|00002480| 65 3a 20 74 68 65 4f 44 | 0d 09 09 43 44 50 20 2d |e: theOD|...CDP -|
|00002490| 3e 20 62 61 63 6b 73 74 | 6f 70 5f 43 44 50 0d 09 |> backst|op_CDP..|
|000024a0| 45 4c 53 45 0d 0d 09 09 | 74 68 65 4f 44 20 20 69 |ELSE....|theOD i|
|000024b0| 6e 76 61 6c 69 64 61 74 | 65 5f 6f 6e 5f 6f 76 65 |nvalidat|e_on_ove|
|000024c0| 72 6c 61 70 3a 20 47 50 | 52 73 0d 09 09 74 68 65 |rlap: GP|Rs...the|
|000024d0| 4f 44 20 20 69 6e 76 61 | 6c 69 64 61 74 65 5f 6f |OD inva|lidate_o|
|000024e0| 6e 5f 6f 76 65 72 6c 61 | 70 3a 20 46 50 52 73 0d |n_overla|p: FPRs.|
|000024f0| 09 09 74 68 65 4f 44 20 | 20 69 6e 76 61 6c 69 64 |..theOD | invalid|
|00002500| 61 74 65 5f 6f 6e 5f 6f | 76 65 72 6c 61 70 3a 20 |ate_on_o|verlap: |
|00002510| 73 74 6f 72 65 64 5f 47 | 50 52 73 0d 09 09 74 68 |stored_G|PRs...th|
|00002520| 65 4f 44 20 20 69 6e 76 | 61 6c 69 64 61 74 65 5f |eOD inv|alidate_|
|00002530| 6f 6e 5f 6f 76 65 72 6c | 61 70 3a 20 73 74 6f 72 |on_overl|ap: stor|
|00002540| 65 64 5f 46 50 52 73 0d | 0d 09 09 63 6f 6d 70 69 |ed_FPRs.|...compi|
|00002550| 6c 65 3a 20 74 68 65 4f | 44 0d 09 09 66 72 65 65 |le: theO|D...free|
|00002560| 3a 20 6f 70 6e 64 32 09 | 09 5c 20 66 72 65 65 20 |: opnd2.|.\ free |
|00002570| 74 68 65 20 64 61 74 61 | 20 72 65 67 0d 0d 28 2a |the data| reg..(*|
|00002580| 09 4e 6f 77 20 77 65 20 | 63 6f 70 79 20 74 68 65 |.Now we |copy the|
|00002590| 4f 44 20 74 6f 20 74 68 | 65 20 63 6f 72 72 65 73 |OD to th|e corres|
|000025a0| 70 6f 6e 64 69 6e 67 20 | 73 74 6f 72 65 64 5f 47 |ponding |stored_G|
|000025b0| 50 52 73 20 6f 72 20 73 | 74 6f 72 65 64 5f 46 50 |PRs or s|tored_FP|
|000025c0| 52 73 0d 09 6c 6f 63 61 | 74 69 6f 6e 2c 20 61 6e |Rs..loca|tion, an|
|000025d0| 64 20 73 65 74 20 74 68 | 65 20 6c 61 73 74 52 65 |d set th|e lastRe|
|000025e0| 66 43 44 50 20 69 76 61 | 72 2e 20 20 4e 6f 74 65 |fCDP iva|r. Note|
|000025f0| 20 74 68 61 74 20 74 68 | 69 73 20 69 76 61 72 20 | that th|is ivar |
|00002600| 68 61 73 20 61 0d 09 73 | 70 65 63 69 61 6c 20 6d |has a..s|pecial m|
|00002610| 65 61 6e 69 6e 67 20 66 | 6f 72 20 73 74 6f 72 65 |eaning f|or store|
|00002620| 73 20 2d 20 69 74 27 73 | 20 74 68 65 20 43 44 50 |s - it's| the CDP|
|00002630| 20 66 6f 72 20 77 68 65 | 72 65 20 74 68 65 20 73 | for whe|re the s|
|00002640| 74 6f 72 65 64 20 72 65 | 67 27 73 0d 09 76 61 6c |tored re|g's..val|
|00002650| 75 65 20 77 61 73 20 67 | 65 6e 65 72 61 74 65 64 |ue was g|enerated|
|00002660| 2e 20 20 54 68 65 20 6e | 6f 72 6d 61 6c 20 6d 65 |. The n|ormal me|
|00002670| 61 6e 69 6e 67 20 77 6f | 75 6c 64 6e 27 74 20 6d |aning wo|uldn't m|
|00002680| 61 6b 65 20 73 65 6e 73 | 65 20 66 6f 72 0d 09 73 |ake sens|e for..s|
|00002690| 74 6f 72 65 73 20 61 6e | 79 77 61 79 2e 0d 2a 29 |tores an|yway..*)|
|000026a0| 0d 09 09 72 65 66 54 79 | 70 65 3a 20 6f 70 6e 64 |...refTy|pe: opnd|
|000026b0| 32 0d 09 09 43 41 53 45 | 5b 09 67 70 72 52 65 66 |2...CASE|[.gprRef|
|000026c0| 09 5d 3d 3e 09 09 74 68 | 65 4f 44 20 20 72 65 63 |.]=>..th|eOD rec|
|000026d0| 6f 72 64 5f 47 50 52 5f | 73 74 6f 72 65 0d 09 09 |ord_GPR_|store...|
|000026e0| 09 5b 09 66 70 72 52 65 | 66 09 5d 3d 3e 09 09 74 |.[.fprRe|f.]=>..t|
|000026f0| 68 65 4f 44 20 20 72 65 | 63 6f 72 64 5f 46 50 52 |heOD re|cord_FPR|
|00002700| 5f 73 74 6f 72 65 0d 0d | 09 09 09 20 20 44 45 46 |_store..|... DEF|
|00002710| 41 55 4c 54 3d 3e 09 09 | 74 6f 5f 62 65 5f 77 72 |AULT=>..|to_be_wr|
|00002720| 69 74 74 65 6e 20 20 64 | 72 6f 70 0d 09 09 5d 43 |itten d|rop...]C|
|00002730| 41 53 45 0d 0d 28 2a 09 | 46 69 6e 61 6c 6c 79 20 |ASE..(*.|Finally |
|00002740| 77 65 20 73 65 74 20 74 | 68 65 20 66 65 74 63 68 |we set t|he fetch|
|00002750| 20 62 61 63 6b 73 74 6f | 70 20 74 6f 20 73 74 72 | backsto|p to str|
|00002760| 61 69 67 68 74 20 61 66 | 74 65 72 20 74 68 65 20 |aight af|ter the |
|00002770| 73 74 6f 72 65 2c 20 73 | 6f 20 74 68 61 74 0d 09 |store, s|o that..|
|00002780| 77 65 20 77 6f 6e 27 74 | 20 6d 6f 76 65 20 61 6e |we won't| move an|
|00002790| 79 20 66 65 74 63 68 20 | 66 6f 72 77 61 72 64 20 |y fetch |forward |
|000027a0| 70 61 73 74 20 74 68 69 | 73 20 70 6f 69 6e 74 2e |past thi|s point.|
|000027b0| 20 20 54 6f 20 62 65 20 | 61 62 6c 65 20 74 6f 20 | To be |able to |
|000027c0| 64 6f 20 74 68 69 73 2c | 0d 09 77 65 27 64 20 6e |do this,|..we'd n|
|000027d0| 65 65 64 20 74 6f 20 64 | 6f 20 61 20 66 75 6c 6c |eed to d|o a full|
|000027e0| 20 63 68 65 63 6b 20 66 | 6f 72 20 6f 76 65 72 6c | check f|or overl|
|000027f0| 61 70 20 70 6f 73 73 69 | 62 69 6c 69 74 69 65 73 |ap possi|bilities|
|00002800| 2c 20 73 69 6e 63 65 20 | 61 6e 79 20 6f 76 65 72 |, since |any over|
|00002810| 6c 61 70 0d 09 77 6f 75 | 6c 64 20 69 6e 76 61 6c |lap..wou|ld inval|
|00002820| 69 64 61 74 65 20 6d 6f | 76 69 6e 67 20 74 68 65 |idate mo|ving the|
|00002830| 20 66 65 74 63 68 20 66 | 6f 72 77 61 72 64 2e 20 | fetch f|orward. |
|00002840| 20 54 68 69 73 20 69 73 | 20 64 6f 61 62 6c 65 2c | This is| doable,|
|00002850| 20 62 75 74 20 72 61 74 | 68 65 72 0d 09 63 6f 6d | but rat|her..com|
|00002860| 70 6c 69 63 61 74 65 64 | 2c 20 73 69 6e 63 65 20 |plicated|, since |
|00002870| 77 65 20 6d 61 79 20 68 | 61 76 65 20 61 6c 72 65 |we may h|ave alre|
|00002880| 61 64 79 20 69 6e 76 61 | 6c 69 64 61 74 65 64 20 |ady inva|lidated |
|00002890| 74 68 65 20 72 65 63 6f | 72 64 20 6f 66 20 61 6e |the reco|rd of an|
|000028a0| 0d 09 65 61 72 6c 69 65 | 72 20 73 74 6f 72 65 2c |..earlie|r store,|
|000028b0| 20 73 6f 20 77 65 27 64 | 20 6e 65 65 64 20 74 6f | so we'd| need to|
|000028c0| 20 6b 65 65 70 20 61 20 | 62 79 74 65 73 74 72 69 | keep a |bytestri|
|000028d0| 6e 67 20 77 69 74 68 20 | 69 6e 66 6f 20 61 62 6f |ng with |info abo|
|000028e0| 75 74 20 61 6c 6c 0d 09 | 73 74 6f 72 65 73 20 69 |ut all..|stores i|
|000028f0| 6e 20 74 68 65 20 63 75 | 72 72 65 6e 74 20 64 65 |n the cu|rrent de|
|00002900| 66 69 6e 69 74 69 6f 6e | 2e 20 20 57 65 20 63 6f |finition|. We co|
|00002910| 75 6c 64 20 64 6f 20 74 | 68 69 73 2c 20 62 75 74 |uld do t|his, but|
|00002920| 20 69 74 27 73 20 6e 61 | 73 74 79 2c 20 61 6e 64 | it's na|sty, and|
|00002930| 0d 09 70 72 6f 62 61 62 | 6c 79 20 6e 6f 74 20 77 |..probab|ly not w|
|00002940| 6f 72 74 68 20 69 74 20 | 6a 75 73 74 20 66 6f 72 |orth it |just for|
|00002950| 20 74 68 69 73 20 73 69 | 74 75 61 74 69 6f 6e 2c | this si|tuation,|
|00002960| 20 77 68 69 63 68 20 77 | 69 6c 6c 20 70 72 6f 62 | which w|ill prob|
|00002970| 61 62 6c 79 0d 09 68 61 | 72 64 6c 79 20 65 76 65 |ably..ha|rdly eve|
|00002980| 72 20 73 6c 6f 77 20 64 | 6f 77 6e 20 61 20 66 65 |r slow d|own a fe|
|00002990| 74 63 68 20 61 6e 79 77 | 61 79 2e 0d 2a 29 0d 09 |tch anyw|ay..*)..|
|000029a0| 09 43 44 50 20 2d 3e 20 | 66 65 74 63 68 5f 62 61 |.CDP -> |fetch_ba|
|000029b0| 63 6b 73 74 6f 70 0d 09 | 54 48 45 4e 0d 3b 0d 0d |ckstop..|THEN.;..|
|000029c0| 0d 3a 20 44 4f 5f 4f 50 | 26 53 54 4f 52 45 20 7b |.: DO_OP|&STORE {|
|000029d0| 20 6c 65 6e 20 5c 20 74 | 68 65 4f 70 20 2d 2d 20 | len \ t|heOp -- |
|000029e0| 7d 0d 0d 28 2a 09 54 68 | 69 73 20 68 61 6e 64 6c |}..(*.Th|is handl|
|000029f0| 65 73 20 61 6e 20 6f 70 | 20 69 6e 74 6f 20 6d 65 |es an op| into me|
|00002a00| 6d 6f 72 79 2c 20 73 75 | 63 68 20 61 73 20 2b 2b |mory, su|ch as ++|
|00002a10| 3e 20 61 56 61 6c 75 65 | 2e 20 20 57 65 20 66 65 |> aValue|. We fe|
|00002a20| 74 63 68 2c 20 6f 70 65 | 72 61 74 65 2c 0d 09 73 |tch, ope|rate,..s|
|00002a30| 74 6f 72 65 2e 20 20 4f | 6e 20 65 6e 74 72 79 2c |tore. O|n entry,|
|00002a40| 20 74 68 65 20 74 6f 70 | 20 6f 66 20 63 73 74 6b | the top| of cstk|
|00002a50| 20 69 73 20 61 20 72 65 | 66 65 72 65 6e 63 65 20 | is a re|ference |
|00002a60| 74 6f 20 61 20 72 65 67 | 20 77 69 74 68 20 74 68 |to a reg| with th|
|00002a70| 65 20 74 61 72 67 65 74 | 0d 09 61 64 64 72 2e 20 |e target|..addr. |
|00002a80| 20 54 68 65 20 73 65 63 | 6f 6e 64 20 63 65 6c 6c | The sec|ond cell|
|00002a90| 20 69 73 20 61 20 72 65 | 66 20 74 6f 20 74 68 65 | is a re|f to the|
|00002aa0| 20 72 65 67 20 77 65 27 | 72 65 20 6f 70 65 72 61 | reg we'|re opera|
|00002ab0| 74 69 6e 67 20 69 6e 74 | 6f 20 74 68 61 74 20 74 |ting int|o that t|
|00002ac0| 61 72 67 65 74 2e 0d 09 | 57 65 20 73 74 61 72 74 |arget...|We start|
|00002ad0| 20 6f 66 66 20 77 69 74 | 68 20 64 6f 5f 66 65 74 | off wit|h do_fet|
|00002ae0| 63 68 20 77 68 69 63 68 | 20 6d 61 79 20 63 61 73 |ch which| may cas|
|00002af0| 63 61 64 65 20 74 68 65 | 20 61 64 64 72 65 73 73 |cade the| address|
|00002b00| 20 61 64 64 2e 20 20 57 | 68 61 74 65 76 65 72 20 | add. W|hatever |
|00002b10| 69 74 0d 09 64 6f 65 73 | 2c 20 69 74 20 73 68 6f |it..does|, it sho|
|00002b20| 75 6c 64 20 6c 65 61 76 | 65 20 74 68 65 20 64 65 |uld leav|e the de|
|00002b30| 73 74 20 72 65 67 20 73 | 65 6c 65 63 74 65 64 20 |st reg s|elected |
|00002b40| 28 77 68 65 72 65 20 74 | 68 65 20 64 61 74 61 20 |(where t|he data |
|00002b50| 77 61 73 20 66 65 74 63 | 68 65 64 20 74 6f 29 2e |was fetc|hed to).|
|00002b60| 0d 09 54 68 69 73 20 77 | 69 6c 6c 20 64 65 73 69 |..This w|ill desi|
|00002b70| 67 6e 61 74 65 20 74 68 | 65 20 61 63 74 75 61 6c |gnate th|e actual|
|00002b80| 20 66 65 74 63 68 20 6f | 70 65 72 61 74 69 6f 6e | fetch o|peration|
|00002b90| 20 64 6f 6e 65 2c 20 61 | 6e 64 20 77 65 20 63 61 | done, a|nd we ca|
|00002ba0| 6e 20 75 73 65 0d 09 65 | 78 61 63 74 6c 79 20 74 |n use..e|xactly t|
|00002bb0| 68 69 73 20 72 65 67 20 | 69 6e 66 6f 20 74 6f 20 |his reg |info to |
|00002bc0| 64 6f 20 74 68 65 20 73 | 74 6f 72 65 20 6c 61 74 |do the s|tore lat|
|00002bd0| 65 72 2e 20 20 57 65 20 | 65 6e 73 75 72 65 20 74 |er. We |ensure t|
|00002be0| 68 61 74 20 61 6e 79 20 | 61 6e 74 65 63 65 64 65 |hat any |antecede|
|00002bf0| 6e 74 0d 09 72 65 67 73 | 20 61 72 65 6e 27 74 20 |nt..regs| aren't |
|00002c00| 63 68 61 6e 67 65 64 20 | 62 65 74 77 65 65 6e 20 |changed |between |
|00002c10| 74 68 65 20 66 65 74 63 | 68 20 61 6e 64 20 74 68 |the fetc|h and th|
|00002c20| 65 20 73 74 6f 72 65 20 | 62 79 20 62 75 6d 70 69 |e store |by bumpi|
|00002c30| 6e 67 20 74 68 65 69 72 | 20 72 65 66 63 6e 74 73 |ng their| refcnts|
|00002c40| 0d 09 66 6f 72 20 74 68 | 65 20 64 75 72 61 74 69 |..for th|e durati|
|00002c50| 6f 6e 2e 0d 2a 29 0d 09 | 64 65 62 75 67 3f 20 69 |on..*)..|debug? i|
|00002c60| 66 0d 09 09 2e 22 20 64 | 6f 5f 6f 70 26 73 74 6f |f...." d|o_op&sto|
|00002c70| 72 65 20 63 61 6c 6c 65 | 64 22 20 63 72 0d 09 74 |re calle|d" cr..t|
|00002c80| 68 65 6e 0d 0d 09 73 76 | 4f 70 63 6f 64 65 20 2d |hen...sv|Opcode -|
|00002c90| 3e 20 74 68 65 4f 70 09 | 09 09 5c 20 67 65 74 73 |> theOp.|..\ gets|
|00002ca0| 20 63 6c 6f 62 62 65 72 | 65 64 0d 09 6c 65 6e 20 | clobber|ed..len |
|00002cb0| 30 20 64 6f 5f 66 65 74 | 63 68 09 09 09 09 5c 20 |0 do_fet|ch....\ |
|00002cc0| 64 6f 20 74 68 65 20 66 | 65 74 63 68 20 2d 20 64 |do the f|etch - d|
|00002cd0| 65 73 74 20 47 50 52 20 | 6c 65 66 74 20 73 65 6c |est GPR |left sel|
|00002ce0| 65 63 74 65 64 0d 09 67 | 70 72 3a 20 63 73 74 6b |ected..g|pr: cstk|
|00002cf0| 20 73 65 6c 65 63 74 3a | 20 47 50 52 73 09 09 5c | select:| GPRs..\|
|00002d00| 20 62 75 74 20 69 6e 20 | 63 61 73 65 20 69 74 20 | but in |case it |
|00002d10| 77 61 73 6e 27 74 2c 20 | 77 65 20 65 6e 73 75 72 |wasn't, |we ensur|
|00002d20| 65 20 69 74 20 69 73 2e | 0d 09 09 09 09 09 09 09 |e it is.|........|
|00002d30| 09 5c 20 26 26 26 26 20 | 46 50 52 73 20 74 6f 5f |.\ &&&& |FPRs to_|
|00002d40| 62 65 5f 77 72 69 74 74 | 65 6e 20 21 21 21 0d 0d |be_writt|en !!!..|
|00002d50| 09 64 65 62 75 67 3f 20 | 69 66 0d 09 09 2e 22 20 |.debug? |if...." |
|00002d60| 66 65 74 63 68 20 64 6f | 6e 65 2c 20 74 6f 20 47 |fetch do|ne, to G|
|00002d70| 50 52 3a 20 22 20 63 72 | 20 20 70 72 69 6e 74 3a |PR: " cr| print:|
|00002d80| 20 47 50 52 73 0d 09 74 | 68 65 6e 0d 0d 09 61 64 | GPRs..t|hen...ad|
|00002d90| 64 72 3a 20 47 50 52 73 | 20 20 20 63 6f 70 79 4f |dr: GPRs| copyO|
|00002da0| 44 3a 20 74 6d 70 4f 44 | 09 09 09 5c 20 73 61 76 |D: tmpOD|...\ sav|
|00002db0| 65 20 74 61 72 67 65 74 | 20 4f 44 2c 20 73 69 6e |e target| OD, sin|
|00002dc0| 63 65 20 77 65 27 6c 6c | 20 73 74 6f 72 65 0d 09 |ce we'll| store..|
|00002dd0| 09 09 09 09 09 09 09 09 | 09 5c 20 20 75 73 69 6e |........|.\ usin|
|00002de0| 67 20 69 74 20 73 68 6f | 72 74 6c 79 0d 09 61 6c |g it sho|rtly..al|
|00002df0| 6c 6f 63 61 74 65 3a 20 | 69 76 61 72 3e 20 41 5f |locate: |ivar> A_|
|00002e00| 6f 70 6e 64 20 69 6e 20 | 74 6d 70 4f 44 09 09 5c |opnd in |tmpOD..\|
|00002e10| 20 45 6e 73 75 72 65 20 | 61 6e 79 20 62 61 73 65 | Ensure |any base|
|00002e20| 20 72 65 67 73 20 6e 65 | 65 64 65 64 20 66 6f 72 | regs ne|eded for|
|00002e30| 20 74 68 65 0d 09 61 6c | 6c 6f 63 61 74 65 3a 20 | the..al|locate: |
|00002e40| 69 76 61 72 3e 20 42 5f | 6f 70 6e 64 20 69 6e 20 |ivar> B_|opnd in |
|00002e50| 74 6d 70 4f 44 09 09 5c | 20 20 73 74 6f 72 65 2c |tmpOD..\| store,|
|00002e60| 20 61 72 65 6e 27 74 20 | 63 6c 6f 62 62 65 72 65 | aren't |clobbere|
|00002e70| 64 20 62 79 20 74 68 65 | 20 6f 70 0d 09 6f 74 53 |d by the| op..otS|
|00002e80| 74 6f 72 65 20 20 70 75 | 74 3a 20 69 76 61 72 3e |tore pu|t: ivar>|
|00002e90| 20 6f 70 54 79 70 65 20 | 69 6e 20 74 6d 70 4f 44 | opType |in tmpOD|
|00002ea0| 0d 09 0d 5c 20 61 74 20 | 74 68 69 73 20 70 6f 69 |...\ at |this poi|
|00002eb0| 6e 74 20 74 68 65 20 63 | 73 74 6b 20 69 73 20 28 |nt the c|stk is (|
|00002ec0| 20 73 74 6b 2d 6f 70 6e | 64 20 6d 65 6d 2d 6f 70 | stk-opn|d mem-op|
|00002ed0| 6e 64 20 29 2e 20 57 65 | 20 6e 6f 77 20 6e 65 65 |nd ). We| now nee|
|00002ee0| 64 0d 5c 20 20 74 6f 20 | 28 69 6e 20 65 66 66 65 |d.\ to |(in effe|
|00002ef0| 63 74 29 20 70 6f 73 74 | 70 6f 6e 65 20 61 20 53 |ct) post|pone a S|
|00002f00| 57 41 50 2c 20 73 69 6e | 63 65 20 69 66 20 74 68 |WAP, sin|ce if th|
|00002f10| 65 20 6f 70 20 69 73 20 | 73 75 62 74 72 61 63 74 |e op is |subtract|
|00002f20| 2c 0d 5c 20 20 74 68 65 | 20 73 74 6b 2d 6f 70 6e |,.\ the| stk-opn|
|00002f30| 64 20 6d 75 73 74 20 62 | 65 20 73 75 62 74 72 61 |d must b|e subtra|
|00002f40| 63 74 65 64 20 66 72 6f | 6d 20 74 68 65 20 6d 65 |cted fro|m the me|
|00002f50| 6d 2d 6f 70 6e 64 2e 0d | 0d 09 73 77 61 70 5f 63 |m-opnd..|..swap_c|
|00002f60| 73 74 6b 0d 09 74 68 65 | 4f 70 20 2d 3e 20 6f 70 |stk..the|Op -> op|
|00002f70| 65 72 61 74 69 6f 6e 20 | 20 64 6f 5f 61 72 69 74 |eration | do_arit|
|00002f80| 68 5f 6f 70 09 09 5c 20 | 64 6f 20 74 68 65 20 6f |h_op..\ |do the o|
|00002f90| 70 65 72 61 74 69 6f 6e | 0d 09 0d 09 31 20 6f 70 |peration|....1 op|
|00002fa0| 65 72 61 6e 64 73 09 09 | 09 09 09 5c 20 67 65 74 |erands..|...\ get|
|00002fb0| 20 74 68 65 20 72 65 73 | 75 6c 74 20 72 65 67 20 | the res|ult reg |
|00002fc0| 28 77 69 6c 6c 20 6e 6f | 72 6d 61 6c 6c 79 20 62 |(will no|rmally b|
|00002fd0| 65 20 64 69 66 66 65 72 | 65 6e 74 29 0d 09 6f 70 |e differ|ent)..op|
|00002fe0| 6e 64 31 20 2d 3e 3a 20 | 6f 70 6e 64 32 09 09 09 |nd1 ->: |opnd2...|
|00002ff0| 09 5c 20 63 6f 6d 70 69 | 6c 65 5f 74 68 65 5f 73 |.\ compi|le_the_s|
|00003000| 74 6f 72 65 20 65 78 70 | 65 63 74 73 20 69 74 20 |tore exp|ects it |
|00003010| 69 6e 20 6f 70 6e 64 32 | 0d 09 6f 70 6e 64 31 20 |in opnd2|..opnd1 |
|00003020| 2d 3e 3a 20 69 76 61 72 | 3e 20 6d 79 52 65 66 20 |->: ivar|> myRef |
|00003030| 69 6e 20 74 6d 70 4f 44 | 0d 09 09 09 09 09 09 09 |in tmpOD|........|
|00003040| 09 5c 20 62 75 74 20 74 | 68 65 20 73 74 6f 72 65 |.\ but t|he store|
|00003050| 20 6f 66 20 74 68 61 74 | 20 72 65 67 20 77 69 6c | of that| reg wil|
|00003060| 6c 20 62 65 20 74 6f 20 | 74 68 65 20 6c 6f 63 61 |l be to |the loca|
|00003070| 74 69 6f 6e 0d 09 09 09 | 09 09 09 09 09 5c 20 20 |tion....|.....\ |
|00003080| 77 65 20 67 6f 74 20 62 | 65 66 6f 72 65 0d 09 64 |we got b|efore..d|
|00003090| 65 62 75 67 3f 20 69 66 | 0d 09 09 2e 22 20 72 65 |ebug? if|...." re|
|000030a0| 73 75 6c 74 20 72 65 67 | 3a 22 20 67 70 72 3a 20 |sult reg|:" gpr: |
|000030b0| 6f 70 6e 64 31 20 20 2e | 67 20 20 63 72 0d 09 74 |opnd1 .|g cr..t|
|000030c0| 68 65 6e 0d 0d 09 74 6d | 70 4f 44 20 63 6f 70 79 |hen...tm|pOD copy|
|000030d0| 4f 44 3a 20 74 68 65 4f | 44 0d 09 0d 09 64 65 62 |OD: theO|D....deb|
|000030e0| 75 67 3f 20 69 66 0d 09 | 09 2e 22 20 74 68 65 4f |ug? if..|.." theO|
|000030f0| 44 20 62 65 66 6f 72 65 | 20 73 74 6f 72 65 3a 22 |D before| store:"|
|00003100| 20 70 72 69 6e 74 3a 20 | 74 68 65 4f 44 20 63 72 | print: |theOD cr|
|00003110| 0d 09 74 68 65 6e 0d 09 | 0d 09 63 6f 6d 70 69 6c |..then..|..compil|
|00003120| 65 5f 74 68 65 5f 73 74 | 6f 72 65 0d 09 09 0d 09 |e_the_st|ore.....|
|00003130| 64 65 62 75 67 3f 20 69 | 66 20 20 64 61 73 6d 20 |debug? i|f dasm |
|00003140| 20 74 68 65 6e 0d 0d 09 | 66 72 65 65 3a 20 69 76 | then...|free: iv|
|00003150| 61 72 3e 20 41 5f 6f 70 | 6e 64 20 69 6e 20 74 6d |ar> A_op|nd in tm|
|00003160| 70 4f 44 09 09 5c 20 42 | 65 63 61 75 73 65 20 77 |pOD..\ B|ecause w|
|00003170| 65 20 64 69 64 20 61 6c | 6c 6f 63 61 74 65 3a 20 |e did al|locate: |
|00003180| 6f 6e 20 74 68 65 6d 20 | 61 62 6f 76 65 0d 09 66 |on them |above..f|
|00003190| 72 65 65 3a 20 69 76 61 | 72 3e 20 42 5f 6f 70 6e |ree: iva|r> B_opn|
|000031a0| 64 20 69 6e 20 74 6d 70 | 4f 44 0d 3b 0d 0d 0d 3a |d in tmp|OD.;...:|
|000031b0| 20 28 44 4f 5f 53 54 4f | 52 45 29 09 09 5c 20 66 | (DO_STO|RE)..\ f|
|000031c0| 61 63 74 6f 72 73 20 6f | 75 74 20 63 6f 6d 6d 6f |actors o|ut commo|
|000031d0| 6e 20 63 6f 64 65 20 66 | 72 6f 6d 20 44 4f 5f 53 |n code f|rom DO_S|
|000031e0| 54 4f 52 45 20 61 6e 64 | 20 44 4f 5f 46 50 5f 53 |TORE and| DO_FP_S|
|000031f0| 54 4f 52 45 2e 0d 0d 09 | 6f 70 6e 64 32 20 3e 6d |TORE....|opnd2 >m|
|00003200| 79 52 65 66 3a 20 74 68 | 65 4f 44 09 09 5c 20 74 |yRef: th|eOD..\ t|
|00003210| 68 65 20 72 65 67 20 77 | 65 27 72 65 20 73 74 6f |he reg w|e're sto|
|00003220| 72 69 6e 67 0d 0d 09 67 | 70 72 3a 20 6f 70 6e 64 |ring...g|pr: opnd|
|00003230| 31 20 20 09 3e 41 67 70 | 72 3a 20 74 68 65 4f 44 |1 .>Agp|r: theOD|
|00003240| 0d 09 30 20 3e 42 6c 69 | 74 3a 20 74 68 65 4f 44 |..0 >Bli|t: theOD|
|00003250| 0d 09 0d 09 64 65 62 75 | 67 3f 20 69 66 0d 09 09 |....debu|g? if...|
|00003260| 2e 22 20 28 64 6f 5f 73 | 74 6f 72 65 29 20 63 61 |." (do_s|tore) ca|
|00003270| 6c 6c 65 64 2c 20 77 69 | 74 68 20 61 20 73 74 72 |lled, wi|th a str|
|00003280| 61 69 67 68 74 20 73 74 | 6f 72 65 22 20 63 72 0d |aight st|ore" cr.|
|00003290| 09 09 2e 22 20 2d 20 69 | 6e 69 74 69 61 6c 20 73 |..." - i|nitial s|
|000032a0| 74 6f 72 65 20 73 65 74 | 20 75 70 20 69 6e 20 74 |tore set| up in t|
|000032b0| 68 65 4f 44 3a 22 20 63 | 72 20 70 72 69 6e 74 3a |heOD:" c|r print:|
|000032c0| 20 74 68 65 4f 44 20 63 | 72 0d 09 09 64 61 73 6d | theOD c|r...dasm|
|000032d0| 0d 09 74 68 65 6e 0d 0d | 09 63 61 73 63 61 64 65 |..then..|.cascade|
|000032e0| 26 6d 61 74 63 68 3f 20 | 64 72 6f 70 09 09 5c 20 |&match? |drop..\ |
|000032f0| 73 74 6f 72 65 73 20 6e | 65 76 65 72 20 6d 61 74 |stores n|ever mat|
|00003300| 63 68 20 61 6e 79 74 68 | 69 6e 67 2c 20 62 75 74 |ch anyth|ing, but|
|00003310| 20 61 20 63 61 73 63 61 | 64 65 0d 09 09 09 09 09 | a casca|de......|
|00003320| 09 09 5c 20 20 6d 69 67 | 68 74 20 67 65 74 20 64 |..\ mig|ht get d|
|00003330| 6f 6e 65 0d 09 64 65 62 | 75 67 3f 20 69 66 0d 09 |one..deb|ug? if..|
|00003340| 09 2e 22 20 61 66 74 65 | 72 20 63 61 73 63 61 64 |.." afte|r cascad|
|00003350| 65 26 6d 61 74 63 68 3f | 22 20 63 72 20 70 72 69 |e&match?|" cr pri|
|00003360| 6e 74 3a 20 74 68 65 4f | 44 20 63 72 0d 09 09 2e |nt: theO|D cr....|
|00003370| 22 20 6f 70 6e 64 32 20 | 22 20 70 72 69 6e 74 3a |" opnd2 |" print:|
|00003380| 20 6f 70 6e 64 32 20 63 | 72 0d 09 74 68 65 6e 0d | opnd2 c|r..then.|
|00003390| 0d 5c 09 6f 70 6e 64 32 | 20 3e 6d 79 52 65 66 3a |.\.opnd2| >myRef:|
|000033a0| 20 74 68 65 4f 44 09 09 | 5c 20 74 68 65 20 72 65 | theOD..|\ the re|
|000033b0| 67 20 77 65 27 72 65 20 | 73 74 6f 72 69 6e 67 0d |g we're |storing.|
|000033c0| 09 64 65 62 75 67 3f 20 | 69 66 0d 09 09 2e 22 20 |.debug? |if...." |
|000033d0| 74 68 65 4f 44 20 73 65 | 74 20 75 70 20 66 6f 72 |theOD se|t up for|
|000033e0| 20 73 74 6f 72 65 3a 22 | 20 63 72 20 70 72 69 6e | store:"| cr prin|
|000033f0| 74 3a 20 74 68 65 4f 44 | 20 63 72 0d 09 74 68 65 |t: theOD| cr..the|
|00003400| 6e 0d 09 63 6f 6d 70 69 | 6c 65 5f 74 68 65 5f 73 |n..compi|le_the_s|
|00003410| 74 6f 72 65 0d 0d 09 66 | 72 65 65 3a 20 6f 70 6e |tore...f|ree: opn|
|00003420| 64 31 09 09 09 5c 20 66 | 72 65 65 20 74 68 65 20 |d1...\ f|ree the |
|00003430| 64 65 73 74 20 61 64 64 | 72 20 72 65 67 20 2d 20 |dest add|r reg - |
|00003440| 69 66 20 77 65 20 63 61 | 73 63 61 64 65 64 2c 20 |if we ca|scaded, |
|00003450| 74 68 69 73 20 77 69 6c | 6c 0d 09 09 09 09 09 09 |this wil|l.......|
|00003460| 5c 20 20 68 61 76 65 20 | 62 65 65 6e 20 64 65 6c |\ have |been del|
|00003470| 65 74 65 64 2c 20 62 75 | 74 20 74 68 65 6e 20 6f |eted, bu|t then o|
|00003480| 70 6e 64 31 20 77 69 6c | 6c 20 68 61 76 65 20 62 |pnd1 wil|l have b|
|00003490| 65 65 6e 0d 09 09 09 09 | 09 09 5c 20 20 63 68 61 |een.....|..\ cha|
|000034a0| 6e 67 65 64 20 74 6f 20 | 6e 6f 52 65 66 20 61 6e |nged to |noRef an|
|000034b0| 64 20 74 68 65 20 66 72 | 65 65 3a 20 77 69 6c 6c |d the fr|ee: will|
|000034c0| 20 62 65 20 69 67 6e 6f | 72 65 64 2e 0d 3b 0d 0d | be igno|red..;..|
|000034d0| 0d 3a 20 44 4f 5f 53 54 | 4f 52 45 20 20 7b 20 6c |.: DO_ST|ORE { l|
|000034e0| 65 6e 20 5c 20 72 65 67 | 46 6f 72 53 74 6f 72 65 |en \ reg|ForStore|
|000034f0| 20 2d 2d 20 7d 0d 0d 09 | 64 65 62 75 67 3f 20 69 | -- }...|debug? i|
|00003500| 66 0d 09 09 2e 22 20 64 | 6f 5f 73 74 6f 72 65 20 |f...." d|o_store |
|00003510| 63 61 6c 6c 65 64 20 77 | 69 74 68 20 6f 70 63 6f |called w|ith opco|
|00003520| 64 65 20 22 20 73 76 4f | 70 63 6f 64 65 20 2e 68 |de " svO|pcode .h|
|00003530| 20 63 72 0d 09 09 70 72 | 69 6e 74 61 6c 6c 3a 20 | cr...pr|intall: |
|00003540| 63 73 74 6b 20 20 64 61 | 73 6d 0d 09 74 68 65 6e |cstk da|sm..then|
|00003550| 0d 0d 5c 09 73 76 4f 70 | 63 6f 64 65 20 64 75 70 |..\.svOp|code dup|
|00003560| 20 6f 74 53 74 6f 72 65 | 20 3c 3e 20 20 73 77 61 | otStore| <> swa|
|00003570| 70 20 6f 74 46 50 73 74 | 6f 72 65 20 3c 3e 20 20 |p otFPst|ore <> |
|00003580| 61 6e 64 0d 09 73 76 4f | 70 63 6f 64 65 20 20 24 |and..svO|pcode $|
|00003590| 20 46 46 20 61 6e 64 20 | 20 6f 74 53 74 6f 72 65 | FF and | otStore|
|000035a0| 20 3c 3e 0d 09 49 46 09 | 6c 65 6e 20 64 6f 5f 6f | <>..IF.|len do_o|
|000035b0| 70 26 73 74 6f 72 65 20 | 20 45 58 49 54 20 20 54 |p&store | EXIT T|
|000035c0| 48 45 4e 0d 0d 5c 20 63 | 61 73 63 61 64 65 26 6d |HEN..\ c|ascade&m|
|000035d0| 61 74 63 68 3f 20 77 61 | 6e 74 73 20 74 68 65 20 |atch? wa|nts the |
|000035e0| 61 64 64 72 65 73 73 20 | 6f 70 65 72 61 6e 64 20 |address |operand |
|000035f0| 69 6e 20 6f 70 6e 64 31 | 2c 20 73 6f 20 77 65 27 |in opnd1|, so we'|
|00003600| 6c 6c 20 67 65 74 0d 5c | 20 20 74 68 65 6d 20 69 |ll get.\| them i|
|00003610| 6e 20 72 65 76 65 72 73 | 65 20 6f 72 64 65 72 3a |n revers|e order:|
|00003620| 0d 0d 09 73 77 61 70 5f | 63 73 74 6b 20 20 32 20 |...swap_|cstk 2 |
|00003630| 6f 70 65 72 61 6e 64 73 | 09 5c 20 6f 70 6e 64 32 |operands|.\ opnd2|
|00003640| 20 3d 20 77 68 61 74 20 | 77 65 27 72 65 20 73 74 | = what |we're st|
|00003650| 6f 72 69 6e 67 2c 20 6f | 70 6e 64 31 20 3d 20 77 |oring, o|pnd1 = w|
|00003660| 68 65 72 65 0d 09 0d 09 | 72 65 66 54 79 70 65 3a |here....|refType:|
|00003670| 20 6f 70 6e 64 32 0d 09 | 53 45 4c 45 43 54 5b 09 | opnd2..|SELECT[.|
|00003680| 67 70 72 52 65 66 09 5d | 3d 3e 09 09 09 09 5c 20 |gprRef.]|=>....\ |
|00003690| 6e 6f 74 68 69 6e 67 20 | 74 6f 20 64 6f 0d 09 09 |nothing |to do...|
|000036a0| 20 20 5b 09 6c 69 74 52 | 65 66 09 5d 3d 3e 09 09 | [.litR|ef.]=>..|
|000036b0| 6f 70 6e 64 32 20 67 65 | 74 5f 74 6f 5f 72 65 67 |opnd2 ge|t_to_reg|
|000036c0| 3f 20 64 72 6f 70 0d 09 | 09 20 20 0d 09 09 20 20 |? drop..|. ... |
|000036d0| 5b 09 63 72 52 65 66 09 | 5d 3d 3e 09 09 6f 70 6e |[.crRef.|]=>..opn|
|000036e0| 64 32 20 20 30 20 20 63 | 72 3e 74 68 69 73 5f 67 |d2 0 c|r>this_g|
|000036f0| 70 72 0d 09 09 20 20 09 | 09 09 09 09 30 20 3e 67 |pr... .|....0 >g|
|00003700| 70 72 3a 20 6f 70 6e 64 | 32 0d 0d 09 09 20 20 44 |pr: opnd|2.... D|
|00003710| 45 46 41 55 4c 54 3d 3e | 09 09 09 64 72 6f 70 0d |EFAULT=>|...drop.|
|00003720| 09 5d 53 45 4c 45 43 54 | 0d 0d 5c 20 4e 6f 77 20 |.]SELECT|..\ Now |
|00003730| 77 65 20 68 61 76 65 20 | 74 6f 20 63 68 65 63 6b |we have |to check|
|00003740| 20 74 68 61 74 20 74 68 | 65 20 64 65 73 74 69 6e | that th|e destin|
|00003750| 61 74 69 6f 6e 20 6d 61 | 6b 65 73 20 73 65 6e 73 |ation ma|kes sens|
|00003760| 65 3a 0d 0d 09 72 65 66 | 54 79 70 65 3a 20 6f 70 |e:...ref|Type: op|
|00003770| 6e 64 31 0d 0d 09 53 45 | 4c 45 43 54 5b 09 67 70 |nd1...SE|LECT[.gp|
|00003780| 72 52 65 66 09 5d 3d 3e | 09 09 09 09 09 5c 20 6e |rRef.]=>|.....\ n|
|00003790| 6f 74 68 69 6e 67 20 74 | 6f 20 64 6f 0d 09 09 20 |othing t|o do... |
|000037a0| 20 5b 09 6c 69 74 52 65 | 66 09 5d 3d 3e 09 09 09 | [.litRe|f.]=>...|
|000037b0| 6f 70 6e 64 31 20 67 65 | 74 5f 74 6f 5f 67 70 72 |opnd1 ge|t_to_gpr|
|000037c0| 3f 20 64 72 6f 70 0d 09 | 09 20 20 0d 09 09 20 20 |? drop..|. ... |
|000037d0| 5b 20 67 70 72 4e 61 6d | 65 52 65 66 09 5d 3d 3e |[ gprNam|eRef.]=>|
|000037e0| 09 09 6f 70 6e 64 32 20 | 67 65 74 5f 74 6f 5f 67 |..opnd2 |get_to_g|
|000037f0| 70 72 3f 20 64 72 6f 70 | 0d 09 09 09 09 09 09 09 |pr? drop|........|
|00003800| 09 67 70 72 3a 20 6f 70 | 6e 64 32 20 20 72 65 67 |.gpr: op|nd2 reg|
|00003810| 3a 20 6f 70 6e 64 31 20 | 20 74 72 75 65 20 20 6d |: opnd1 | true m|
|00003820| 6f 76 65 52 65 67 3a 20 | 47 50 52 73 0d 09 09 09 |oveReg: |GPRs....|
|00003830| 09 09 09 09 09 45 58 49 | 54 0d 0d 09 09 20 20 44 |.....EXI|T.... D|
|00003840| 45 46 41 55 4c 54 3d 3e | 09 09 09 32 31 34 20 64 |EFAULT=>|...214 d|
|00003850| 69 65 09 09 5c 20 69 6d | 70 6f 73 73 69 62 6c 65 |ie..\ im|possible|
|00003860| 20 73 74 6f 72 65 20 64 | 65 73 74 69 6e 61 74 69 | store d|estinati|
|00003870| 6f 6e 21 0d 09 5d 53 45 | 4c 45 43 54 0d 0d 5c 20 |on!..]SE|LECT..\ |
|00003880| 6e 6f 77 20 77 65 20 73 | 65 74 20 74 68 69 6e 67 |now we s|et thing|
|00003890| 73 20 75 70 20 69 6e 20 | 74 68 65 4f 44 2c 20 73 |s up in |theOD, s|
|000038a0| 69 6e 63 65 20 77 65 20 | 6d 69 67 68 74 20 62 65 |ince we |might be|
|000038b0| 20 61 62 6c 65 20 74 6f | 20 63 61 73 63 61 64 65 | able to| cascade|
|000038c0| 20 74 68 65 20 61 64 64 | 72 2e 0d 0d 09 63 6c 65 | the add|r....cle|
|000038d0| 61 72 3a 20 74 68 65 4f | 44 0d 09 6f 74 53 74 6f |ar: theO|D..otSto|
|000038e0| 72 65 09 09 70 75 74 3a | 20 69 76 61 72 3e 20 6f |re..put:| ivar> o|
|000038f0| 70 54 79 70 65 09 69 6e | 20 74 68 65 4f 44 0d 09 |pType.in| theOD..|
|00003900| 6c 65 6e 09 09 09 70 75 | 74 3a 20 69 76 61 72 3e |len...pu|t: ivar>|
|00003910| 20 6c 65 6e 09 09 69 6e | 20 74 68 65 4f 44 0d 09 | len..in| theOD..|
|00003920| 0d 09 28 64 6f 5f 73 74 | 6f 72 65 29 0d 3b 0d 0d |..(do_st|ore).;..|
|00003930| 0d 3a 20 44 4f 5f 46 50 | 5f 53 54 4f 52 45 20 20 |.: DO_FP|_STORE |
|00003940| 7b 20 6c 65 6e 20 2d 2d | 20 7d 0d 0d 09 64 65 62 |{ len --| }...deb|
|00003950| 75 67 3f 20 69 66 0d 09 | 09 2e 22 20 64 6f 5f 46 |ug? if..|.." do_F|
|00003960| 50 5f 73 74 6f 72 65 20 | 63 61 6c 6c 65 64 20 77 |P_store |called w|
|00003970| 69 74 68 20 6f 70 63 6f | 64 65 20 22 20 73 76 4f |ith opco|de " svO|
|00003980| 70 63 6f 64 65 20 2e 68 | 20 63 72 0d 09 09 70 72 |pcode .h| cr...pr|
|00003990| 69 6e 74 61 6c 6c 3a 20 | 63 73 74 6b 0d 09 74 68 |intall: |cstk..th|
|000039a0| 65 6e 0d 09 0d 5c 20 63 | 61 73 63 61 64 65 26 6d |en...\ c|ascade&m|
|000039b0| 61 74 63 68 3f 20 77 61 | 6e 74 73 20 74 68 65 20 |atch? wa|nts the |
|000039c0| 61 64 64 72 65 73 73 20 | 6f 70 65 72 61 6e 64 20 |address |operand |
|000039d0| 69 6e 20 6f 70 6e 64 31 | 2c 20 73 6f 20 77 65 27 |in opnd1|, so we'|
|000039e0| 6c 6c 0d 5c 20 20 6f 72 | 67 61 6e 69 7a 65 20 74 |ll.\ or|ganize t|
|000039f0| 68 69 6e 67 73 20 74 68 | 61 74 20 77 61 79 3a 0d |hings th|at way:.|
|00003a00| 0d 09 31 20 66 6f 70 65 | 72 61 6e 64 73 20 20 6f |..1 fope|rands o|
|00003a10| 70 6e 64 31 20 2d 3e 3a | 20 6f 70 6e 64 32 09 09 |pnd1 ->:| opnd2..|
|00003a20| 5c 20 6f 70 6e 64 32 20 | 3d 20 77 68 61 74 20 77 |\ opnd2 |= what w|
|00003a30| 65 27 72 65 20 73 74 6f | 72 69 6e 67 0d 09 31 20 |e're sto|ring..1 |
|00003a40| 6f 70 65 72 61 6e 64 73 | 09 09 09 09 09 09 09 5c |operands|.......\|
|00003a50| 20 6f 70 6e 64 31 20 3d | 20 77 68 65 72 65 0d 09 | opnd1 =| where..|
|00003a60| 0d 09 41 53 53 45 52 54 | 7b 20 72 65 66 54 79 70 |..ASSERT|{ refTyp|
|00003a70| 65 3a 20 6f 70 6e 64 32 | 20 20 46 50 52 72 65 66 |e: opnd2| FPRref|
|00003a80| 20 3d 20 7d 0d 0d 09 72 | 65 66 74 79 70 65 3a 20 | = }...r|eftype: |
|00003a90| 6f 70 6e 64 31 0d 09 53 | 45 4c 45 43 54 5b 09 67 |opnd1..S|ELECT[.g|
|00003aa0| 70 72 52 65 66 09 5d 3d | 3e 09 09 09 09 5c 20 6e |prRef.]=|>....\ n|
|00003ab0| 6f 72 6d 61 6c 20 73 74 | 6f 72 65 20 74 6f 20 6d |ormal st|ore to m|
|00003ac0| 65 6d 20 2d 20 68 61 6e | 64 6c 65 64 20 62 65 6c |em - han|dled bel|
|00003ad0| 6f 77 0d 0d 09 09 20 20 | 5b 20 66 70 72 4e 61 6d |ow.... |[ fprNam|
|00003ae0| 65 52 65 66 09 5d 3d 3e | 09 09 66 70 72 3a 20 6f |eRef.]=>|..fpr: o|
|00003af0| 70 6e 64 32 20 20 72 65 | 67 3a 20 6f 70 6e 64 31 |pnd2 re|g: opnd1|
|00003b00| 20 20 74 72 75 65 20 20 | 6d 6f 76 65 52 65 67 3a | true |moveReg:|
|00003b10| 20 46 50 52 73 0d 09 09 | 09 09 09 09 09 09 45 58 | FPRs...|......EX|
|00003b20| 49 54 0d 0d 09 09 20 20 | 44 45 46 41 55 4c 54 3d |IT.... |DEFAULT=|
|00003b30| 3e 09 09 09 32 31 34 20 | 64 69 65 09 09 5c 20 69 |>...214 |die..\ i|
|00003b40| 6d 70 6f 73 73 69 62 6c | 65 20 73 74 6f 72 65 20 |mpossibl|e store |
|00003b50| 64 65 73 74 69 6e 61 74 | 69 6f 6e 21 0d 09 5d 53 |destinat|ion!..]S|
|00003b60| 45 4c 45 43 54 0d 0d 5c | 20 6e 6f 77 20 77 65 20 |ELECT..\| now we |
|00003b70| 73 65 74 20 74 68 69 6e | 67 73 20 75 70 20 69 6e |set thin|gs up in|
|00003b80| 20 74 68 65 4f 44 2c 20 | 73 69 6e 63 65 20 77 65 | theOD, |since we|
|00003b90| 20 6d 69 67 68 74 20 62 | 65 20 61 62 6c 65 20 74 | might b|e able t|
|00003ba0| 6f 20 63 61 73 63 61 64 | 65 20 74 68 65 20 61 64 |o cascad|e the ad|
|00003bb0| 64 72 2e 0d 0d 09 63 6c | 65 61 72 3a 20 74 68 65 |dr....cl|ear: the|
|00003bc0| 4f 44 0d 09 6f 74 46 50 | 53 74 6f 72 65 09 70 75 |OD..otFP|Store.pu|
|00003bd0| 74 3a 20 69 76 61 72 3e | 20 6f 70 54 79 70 65 09 |t: ivar>| opType.|
|00003be0| 69 6e 20 74 68 65 4f 44 | 0d 09 6c 65 6e 09 09 09 |in theOD|..len...|
|00003bf0| 70 75 74 3a 20 69 76 61 | 72 3e 20 6c 65 6e 09 09 |put: iva|r> len..|
|00003c00| 69 6e 20 74 68 65 4f 44 | 0d 09 0d 09 28 64 6f 5f |in theOD|....(do_|
|00003c10| 73 74 6f 72 65 29 0d 3b | 0d 0d 0d 0d 3a 20 53 49 |store).;|....: SI|
|00003c20| 5a 45 3e 4c 45 4e 09 09 | 09 09 09 5c 20 63 6f 6e |ZE>LEN..|...\ con|
|00003c30| 76 65 72 74 73 20 6f 75 | 72 20 73 69 7a 65 20 63 |verts ou|r size c|
|00003c40| 6f 64 65 73 20 74 6f 20 | 61 20 6c 65 6e 67 74 68 |odes to |a length|
|00003c50| 20 69 6e 20 62 79 74 65 | 73 0d 09 53 45 4c 45 43 | in byte|s..SELEC|
|00003c60| 54 5b 09 30 09 5d 3d 3e | 09 09 31 0d 09 09 20 20 |T[.0.]=>|..1... |
|00003c70| 5b 09 31 09 5d 3d 3e 09 | 09 32 0d 09 09 20 20 5b |[.1.]=>.|.2... [|
|00003c80| 09 32 09 5d 3d 3e 09 09 | 34 0d 09 09 20 20 5b 09 |.2.]=>..|4... [.|
|00003c90| 33 09 5d 3d 3e 09 09 38 | 0d 09 44 45 46 41 55 4c |3.]=>..8|..DEFAUL|
|00003ca0| 54 3d 3e 0d 09 5d 53 45 | 4c 45 43 54 0d 3b 0d 0d |T=>..]SE|LECT.;..|
|00003cb0| 0d 3a 20 40 5f 48 20 20 | 7b 20 63 66 61 20 5c 20 |.: @_H |{ cfa \ |
|00003cc0| 66 6c 61 67 73 20 73 69 | 7a 65 20 2d 2d 20 7d 0d |flags si|ze -- }.|
|00003cd0| 09 63 66 61 20 5e 65 78 | 74 72 61 5f 69 6e 66 6f |.cfa ^ex|tra_info|
|00003ce0| 20 2d 3e 20 63 66 61 0d | 09 63 66 61 20 31 2b 20 | -> cfa.|.cfa 1+ |
|00003cf0| 63 40 20 2d 3e 20 73 69 | 7a 65 0d 09 63 66 61 20 |c@ -> si|ze..cfa |
|00003d00| 33 2b 20 63 40 20 2d 3e | 20 66 6c 61 67 73 0d 09 |3+ c@ ->| flags..|
|00003d10| 73 69 7a 65 20 73 69 7a | 65 3e 6c 65 6e 20 66 6c |size siz|e>len fl|
|00003d20| 61 67 73 20 20 64 6f 5f | 66 65 74 63 68 20 20 3b |ags do_|fetch ;|
|00003d30| 0d 0d 0d 3a 20 21 5f 48 | 20 20 7b 20 63 66 61 20 |...: !_H| { cfa |
|00003d40| 5c 20 66 6c 61 67 73 20 | 73 69 7a 65 20 2d 2d 20 |\ flags |size -- |
|00003d50| 7d 0d 09 63 66 61 20 5e | 65 78 74 72 61 5f 69 6e |}..cfa ^|extra_in|
|00003d60| 66 6f 20 2d 3e 20 63 66 | 61 0d 09 63 66 61 20 20 |fo -> cf|a..cfa |
|00003d70| 20 20 63 40 20 2d 3e 20 | 73 76 4f 70 63 6f 64 65 | c@ -> |svOpcode|
|00003d80| 0d 09 63 66 61 20 31 2b | 20 63 40 20 2d 3e 20 73 |..cfa 1+| c@ -> s|
|00003d90| 69 7a 65 0d 09 73 69 7a | 65 20 73 69 7a 65 3e 6c |ize..siz|e size>l|
|00003da0| 65 6e 20 20 64 6f 5f 73 | 74 6f 72 65 20 20 3b 0d |en do_s|tore ;.|
|00003db0| 0d 0d 3a 20 46 40 5f 48 | 20 20 7b 20 63 66 61 20 |..: F@_H| { cfa |
|00003dc0| 2d 2d 20 7d 09 38 20 20 | 64 6f 5f 66 70 5f 66 65 |-- }.8 |do_fp_fe|
|00003dd0| 74 63 68 20 20 3b 0d 3a | 20 53 46 40 5f 48 20 20 |tch ;.:| SF@_H |
|00003de0| 7b 20 63 66 61 20 2d 2d | 20 7d 09 34 20 20 64 6f |{ cfa --| }.4 do|
|00003df0| 5f 66 70 5f 66 65 74 63 | 68 20 20 3b 0d 0d 3a 20 |_fp_fetc|h ;..: |
|00003e00| 46 21 5f 48 20 20 7b 20 | 63 66 61 20 2d 2d 20 7d |F!_H { |cfa -- }|
|00003e10| 20 20 38 20 20 64 6f 5f | 66 70 5f 73 74 6f 72 65 | 8 do_|fp_store|
|00003e20| 20 20 3b 0d 3a 20 53 46 | 21 5f 48 20 7b 20 63 66 | ;.: SF|!_H { cf|
|00003e30| 61 20 2d 2d 20 7d 20 20 | 34 20 20 64 6f 5f 66 70 |a -- } |4 do_fp|
|00003e40| 5f 73 74 6f 72 65 20 20 | 3b 0d 0d 0d 50 50 43 3f |_store |;...PPC?|
|00003e50| 20 6e 6f 74 0d 5b 49 46 | 5d 0d 0d 28 2a 09 48 65 | not.[IF|]..(*.He|
|00003e60| 72 65 20 69 6e 20 36 38 | 6b 20 6d 6f 64 65 20 77 |re in 68|k mode w|
|00003e70| 65 20 64 65 66 69 6e 65 | 20 73 6f 6d 65 20 69 6e |e define| some in|
|00003e80| 74 65 72 69 6d 20 76 65 | 72 73 69 6f 6e 73 20 6f |terim ve|rsions o|
|00003e90| 66 20 73 6f 6d 65 20 6f | 66 20 6f 75 72 0d 09 66 |f some o|f our..f|
|00003ea0| 6c 6f 61 74 69 6e 67 20 | 70 6f 69 6e 74 20 6f 70 |loating |point op|
|00003eb0| 65 72 61 74 69 6f 6e 73 | 2e 20 20 54 68 69 73 20 |erations|. This |
|00003ec0| 61 6c 6c 6f 77 73 20 75 | 73 20 64 6f 20 73 6f 6d |allows u|s do som|
|00003ed0| 65 20 74 65 73 74 69 6e | 67 20 6f 6e 20 74 68 65 |e testin|g on the|
|00003ee0| 0d 09 46 50 20 63 6f 64 | 65 20 67 65 6e 65 72 61 |..FP cod|e genera|
|00003ef0| 74 69 6f 6e 20 77 69 74 | 68 6f 75 74 20 68 61 76 |tion wit|hout hav|
|00003f00| 69 6e 67 20 74 6f 20 6c | 6f 61 64 20 65 76 65 72 |ing to l|oad ever|
|00003f10| 79 74 68 69 6e 67 2c 20 | 61 6e 64 20 61 6c 73 6f |ything, |and also|
|00003f20| 20 6c 65 74 73 0d 09 75 | 73 20 74 61 72 67 65 74 | lets..u|s target|
|00003f30| 20 63 6f 6d 70 69 6c 65 | 20 63 6f 64 65 20 69 6e | compile| code in|
|00003f40| 20 53 65 74 75 70 20 74 | 6f 20 69 6e 69 74 69 61 | Setup t|o initia|
|00003f50| 6c 69 7a 65 20 74 68 65 | 20 46 50 20 72 65 67 73 |lize the| FP regs|
|00003f60| 2e 0d 09 0d 09 41 73 20 | 69 6e 74 65 72 69 6d 20 |.....As |interim |
|00003f70| 6f 70 73 2c 20 74 68 65 | 73 65 20 61 72 65 20 69 |ops, the|se are i|
|00003f80| 6d 6d 65 64 69 61 74 65 | 20 61 6e 64 20 63 61 6e |mmediate| and can|
|00003f90| 20 6f 6e 6c 79 20 62 65 | 20 75 73 65 64 20 69 6e | only be| used in|
|00003fa0| 20 61 0d 09 64 65 66 69 | 6e 69 74 69 6f 6e 2e 0d | a..defi|nition..|
|00003fb0| 2a 29 0d 0d 3a 20 46 40 | 09 38 20 20 64 6f 5f 66 |*)..: F@|.8 do_f|
|00003fc0| 70 5f 66 65 74 63 68 20 | 20 3b 09 69 6d 6d 65 64 |p_fetch | ;.immed|
|00003fd0| 69 61 74 65 0d 3a 20 46 | 21 09 38 20 20 64 6f 5f |iate.: F|!.8 do_|
|00003fe0| 66 70 5f 73 74 6f 72 65 | 20 20 3b 09 69 6d 6d 65 |fp_store| ;.imme|
|00003ff0| 64 69 61 74 65 0d 0d 3a | 20 53 46 40 09 34 20 20 |diate..:| SF@.4 |
|00004000| 64 6f 5f 66 70 5f 66 65 | 74 63 68 20 20 3b 09 69 |do_fp_fe|tch ;.i|
|00004010| 6d 6d 65 64 69 61 74 65 | 0d 3a 20 53 46 21 09 34 |mmediate|.: SF!.4|
|00004020| 20 20 64 6f 5f 66 70 5f | 73 74 6f 72 65 20 20 3b | do_fp_|store ;|
|00004030| 09 69 6d 6d 65 64 69 61 | 74 65 0d 0d 3a 20 46 2b |.immedia|te..: F+|
|00004040| 09 6f 74 46 41 44 44 20 | 2d 3e 20 6f 70 65 72 61 |.otFADD |-> opera|
|00004050| 74 69 6f 6e 20 20 64 79 | 61 64 69 63 5f 61 72 69 |tion dy|adic_ari|
|00004060| 74 68 20 20 3b 09 09 69 | 6d 6d 65 64 69 61 74 65 |th ;..i|mmediate|
|00004070| 0d 3a 20 46 2d 09 6f 74 | 46 53 75 62 20 2d 3e 20 |.: F-.ot|FSub -> |
|00004080| 6f 70 65 72 61 74 69 6f | 6e 20 20 64 79 61 64 69 |operatio|n dyadi|
|00004090| 63 5f 61 72 69 74 68 20 | 20 3b 09 09 69 6d 6d 65 |c_arith | ;..imme|
|000040a0| 64 69 61 74 65 0d 3a 20 | 46 2a 09 6f 74 46 4d 55 |diate.: |F*.otFMU|
|000040b0| 4c 20 2d 3e 20 6f 70 65 | 72 61 74 69 6f 6e 20 20 |L -> ope|ration |
|000040c0| 64 79 61 64 69 63 5f 61 | 72 69 74 68 20 20 3b 09 |dyadic_a|rith ;.|
|000040d0| 09 69 6d 6d 65 64 69 61 | 74 65 0d 3a 20 46 44 52 |.immedia|te.: FDR|
|000040e0| 4f 50 09 74 6d 70 52 65 | 66 31 20 66 70 6f 70 20 |OP.tmpRe|f1 fpop |
|000040f0| 20 66 72 65 65 3a 20 74 | 6d 70 52 65 66 31 20 20 | free: t|mpRef1 |
|00004100| 3b 09 09 09 09 69 6d 6d | 65 64 69 61 74 65 0d 3a |;....imm|ediate.:|
|00004110| 20 46 44 55 50 09 31 20 | 66 6f 70 65 72 61 6e 64 | FDUP.1 |foperand|
|00004120| 73 20 20 6f 70 6e 64 31 | 20 66 70 75 73 68 20 20 |s opnd1| fpush |
|00004130| 6f 70 6e 64 31 20 66 70 | 75 73 68 0d 09 09 61 6c |opnd1 fp|ush...al|
|00004140| 6c 6f 63 61 74 65 3a 20 | 6f 70 6e 64 31 20 20 3b |locate: |opnd1 ;|
|00004150| 09 09 09 09 09 09 09 69 | 6d 6d 65 64 69 61 74 65 |.......i|mmediate|
|00004160| 0d 09 09 09 09 09 09 09 | 0d 3a 20 46 4f 56 45 52 |........|.: FOVER|
|00004170| 09 32 20 66 6f 70 65 72 | 61 6e 64 73 20 20 6f 70 |.2 foper|ands op|
|00004180| 6e 64 31 20 66 70 75 73 | 68 20 20 6f 70 6e 64 32 |nd1 fpus|h opnd2|
|00004190| 20 66 70 75 73 68 20 20 | 6f 70 6e 64 31 20 66 70 | fpush |opnd1 fp|
|000041a0| 75 73 68 0d 09 09 61 6c | 6c 6f 63 61 74 65 3a 20 |ush...al|locate: |
|000041b0| 6f 70 6e 64 31 20 20 3b | 09 09 09 09 09 09 09 69 |opnd1 ;|.......i|
|000041c0| 6d 6d 65 64 69 61 74 65 | 0d 0d 5b 45 4c 53 45 5d |mmediate|..[ELSE]|
|000041d0| 0d 0d 28 2a 09 49 6e 20 | 50 50 43 20 6d 6f 64 65 |..(*.In |PPC mode|
|000041e0| 20 77 65 20 64 65 66 69 | 6e 65 20 28 76 6f 70 29 | we defi|ne (vop)|
|000041f0| 20 77 68 69 63 68 20 69 | 73 20 74 68 65 20 62 61 | which i|s the ba|
|00004200| 73 69 63 20 77 6f 72 64 | 20 77 68 69 63 68 20 63 |sic word| which c|
|00004210| 6f 6d 70 69 6c 65 73 0d | 09 61 20 76 65 63 74 6f |ompiles.|.a vecto|
|00004220| 72 20 6f 70 65 72 61 74 | 69 6f 6e 20 77 69 74 68 |r operat|ion with|
|00004230| 20 32 20 6f 72 20 33 20 | 73 6f 75 72 63 65 20 6f | 2 or 3 |source o|
|00004240| 70 65 72 61 6e 64 73 20 | 61 6e 64 20 6f 6e 65 20 |perands |and one |
|00004250| 64 65 73 74 69 6e 61 74 | 69 6f 6e 2e 0d 09 41 73 |destinat|ion...As|
|00004260| 20 77 65 20 64 6f 6e 27 | 74 20 68 61 76 65 20 61 | we don'|t have a|
|00004270| 20 76 65 63 74 6f 72 20 | 73 74 61 63 6b 2c 20 74 | vector |stack, t|
|00004280| 68 65 20 76 65 63 74 6f | 72 20 6f 70 65 72 61 6e |he vecto|r operan|
|00004290| 64 73 20 6d 75 73 74 20 | 62 65 20 61 62 6c 65 20 |ds must |be able |
|000042a0| 74 6f 20 62 65 20 0d 09 | 64 65 74 65 72 6d 69 6e |to be ..|determin|
|000042b0| 65 64 20 61 74 20 63 6f | 6d 70 69 6c 65 20 74 69 |ed at co|mpile ti|
|000042c0| 6d 65 20 2d 20 69 2e 65 | 2e 20 74 68 65 79 20 6d |me - i.e|. they m|
|000042d0| 75 73 74 20 62 65 20 6f | 6e 20 63 73 74 6b 2e 0d |ust be o|n cstk..|
|000042e0| 2a 29 0d 0d 3a 20 28 76 | 6f 70 29 20 20 7b 20 6f |*)..: (v|op) { o|
|000042f0| 70 63 6f 64 65 20 76 65 | 63 4b 69 6e 64 20 34 6f |pcode ve|cKind 4o|
|00004300| 70 3f 20 5c 20 67 70 72 | 23 20 76 72 23 20 73 74 |p? \ gpr|# vr# st|
|00004310| 6f 72 65 62 61 63 6b 3f | 20 6f 70 31 3f 20 6c 69 |oreback?| op1? li|
|00004320| 74 3f 20 6c 69 74 56 61 | 6c 20 2d 2d 20 7d 0d 0d |t? litVa|l -- }..|
|00004330| 09 66 61 6c 73 65 20 2d | 3e 20 73 74 6f 72 65 62 |.false -|> storeb|
|00004340| 61 63 6b 3f 20 20 66 61 | 6c 73 65 20 2d 3e 20 6c |ack? fa|lse -> l|
|00004350| 69 74 3f 20 20 74 72 75 | 65 20 2d 3e 20 6f 70 31 |it? tru|e -> op1|
|00004360| 3f 0d 0d 09 34 6f 70 3f | 0d 09 49 46 09 09 34 20 |?...4op?|..IF..4 |
|00004370| 6f 70 65 72 61 6e 64 73 | 0d 09 45 4c 53 45 09 33 |operands|..ELSE.3|
|00004380| 20 6f 70 65 72 61 6e 64 | 73 0d 09 09 09 6f 70 6e | operand|s....opn|
|00004390| 64 33 20 2d 3e 3a 20 6f | 70 6e 64 34 0d 09 54 48 |d3 ->: o|pnd4..TH|
|000043a0| 45 4e 09 0d 09 0d 5c 20 | 6f 70 6e 64 31 20 3d 20 |EN....\ |opnd1 = |
|000043b0| 73 6f 75 72 63 65 31 2c | 20 6f 70 6e 64 32 20 3d |source1,| opnd2 =|
|000043c0| 20 73 6f 75 72 63 65 32 | 2c 20 6f 70 6e 64 33 20 | source2|, opnd3 |
|000043d0| 3d 20 73 6f 75 72 63 65 | 33 20 69 66 20 61 6e 79 |= source|3 if any|
|000043e0| 2c 20 6f 70 6e 64 34 20 | 3d 20 64 65 73 74 2e 0d |, opnd4 |= dest..|
|000043f0| 5c 20 20 41 6e 79 20 6f | 66 20 74 68 65 73 65 20 |\ Any o|f these |
|00004400| 6f 70 65 72 61 6e 64 73 | 20 77 69 6c 6c 20 62 65 |operands| will be|
|00004410| 20 76 72 4e 61 6d 65 52 | 65 66 20 69 66 20 69 74 | vrNameR|ef if it|
|00004420| 27 73 20 61 20 76 65 63 | 74 6f 72 20 72 65 67 69 |'s a vec|tor regi|
|00004430| 73 74 65 72 20 6f 62 6a | 65 63 74 2e 0d 0d 09 72 |ster obj|ect....r|
|00004440| 65 66 74 79 70 65 3a 20 | 6f 70 6e 64 34 09 09 09 |eftype: |opnd4...|
|00004450| 5c 20 64 65 73 74 0d 09 | 76 72 4e 61 6d 65 52 65 |\ dest..|vrNameRe|
|00004460| 66 20 3d 0d 09 49 46 09 | 09 09 09 09 09 5c 20 64 |f =..IF.|.....\ d|
|00004470| 65 73 74 20 69 73 20 61 | 20 56 52 0d 09 09 72 65 |est is a| VR...re|
|00004480| 67 3a 20 6f 70 6e 64 34 | 09 09 09 5c 20 64 65 73 |g: opnd4|...\ des|
|00004490| 74 0d 09 09 64 75 70 20 | 2d 3e 20 76 72 23 0d 09 |t...dup |-> vr#..|
|000044a0| 09 64 75 70 20 73 65 6c | 65 63 74 3a 20 56 52 73 |.dup sel|ect: VRs|
|000044b0| 20 20 3e 42 76 72 3a 20 | 56 52 73 0d 09 45 4c 53 | >Bvr: |VRs..ELS|
|000044c0| 45 09 09 09 09 09 5c 20 | 64 65 73 74 20 69 73 20 |E.....\ |dest is |
|000044d0| 69 6e 20 6d 65 6d 6f 72 | 79 2e 20 20 57 65 20 64 |in memor|y. We d|
|000044e0| 6f 6e 27 74 20 68 61 76 | 65 20 61 20 76 65 63 74 |on't hav|e a vect|
|000044f0| 6f 72 0d 09 09 09 09 09 | 09 09 5c 20 20 73 74 61 |or......|..\ sta|
|00004500| 63 6b 2c 20 73 6f 20 77 | 65 20 64 6f 20 74 68 65 |ck, so w|e do the|
|00004510| 20 6f 70 65 72 61 74 69 | 6f 6e 20 69 6e 20 76 72 | operati|on in vr|
|00004520| 30 2c 20 74 68 65 6e 20 | 0d 09 09 09 09 09 09 09 |0, then |........|
|00004530| 5c 20 20 73 74 6f 72 65 | 20 62 61 63 6b 2e 0d 09 |\ store| back...|
|00004540| 09 74 72 75 65 20 2d 3e | 20 73 74 6f 72 65 62 61 |.true ->| storeba|
|00004550| 63 6b 3f 0d 09 09 6f 70 | 6e 64 34 20 67 65 74 5f |ck?...op|nd4 get_|
|00004560| 74 6f 5f 67 70 72 3f 20 | 64 72 6f 70 09 09 5c 20 |to_gpr? |drop..\ |
|00004570| 6d 61 6b 65 20 73 75 72 | 65 20 77 65 20 68 61 76 |make sur|e we hav|
|00004580| 65 20 62 61 73 65 20 61 | 64 64 72 20 69 6e 20 61 |e base a|ddr in a|
|00004590| 20 67 70 72 0d 09 09 30 | 20 2d 3e 20 76 72 23 20 | gpr...0| -> vr# |
|000045a0| 20 30 20 73 65 6c 65 63 | 74 3a 20 56 52 73 0d 09 | 0 selec|t: VRs..|
|000045b0| 09 6f 74 46 65 74 63 68 | 20 6f 74 56 65 63 4f 66 |.otFetch| otVecOf|
|000045c0| 66 73 65 74 20 2b 20 20 | 70 75 74 3a 20 69 76 61 |fset + |put: iva|
|000045d0| 72 3e 20 6f 70 54 79 70 | 65 20 69 6e 20 56 52 73 |r> opTyp|e in VRs|
|000045e0| 0d 09 09 72 65 67 3a 20 | 6f 70 6e 64 32 20 20 64 |...reg: |opnd2 d|
|000045f0| 75 70 20 2d 3e 20 67 70 | 72 23 20 20 3e 41 67 70 |up -> gp|r# >Agp|
|00004600| 72 3a 20 56 52 73 20 20 | 30 20 3e 42 6c 69 74 3a |r: VRs |0 >Blit:|
|00004610| 20 56 52 73 0d 09 09 63 | 6f 6d 70 69 6c 65 3a 20 | VRs...c|ompile: |
|00004620| 56 52 73 0d 09 09 30 20 | 3e 56 52 3a 20 6f 70 6e |VRs...0 |>VR: opn|
|00004630| 64 32 0d 09 54 48 45 4e | 0d 0d 5c 20 6e 6f 77 20 |d2..THEN|..\ now |
|00004640| 77 65 20 6e 65 65 64 20 | 74 6f 20 64 6f 20 73 6f |we need |to do so|
|00004650| 6d 65 20 73 70 65 63 69 | 61 6c 20 74 68 69 6e 67 |me speci|al thing|
|00004660| 73 20 69 66 20 77 65 20 | 68 61 76 65 20 61 20 6c |s if we |have a l|
|00004670| 69 74 65 72 61 6c 20 6f | 70 65 72 61 6e 64 3a 0d |iteral o|perand:.|
|00004680| 0d 09 6f 70 63 6f 64 65 | 0d 09 43 41 53 45 5b 20 |..opcode|..CASE[ |
|00004690| 24 20 38 30 20 5d 2c 20 | 5b 20 24 20 38 31 20 5d |$ 80 ], |[ $ 81 ]|
|000046a0| 3d 3e 09 5c 20 76 65 63 | 74 6f 72 20 73 70 6c 61 |=>.\ vec|tor spla|
|000046b0| 74 2f 73 70 6c 61 74 20 | 69 6d 6d 65 64 69 61 74 |t/splat |immediat|
|000046c0| 65 2e 0d 09 09 09 09 09 | 09 09 09 5c 20 46 6f 72 |e.......|...\ For|
|000046d0| 20 73 70 6c 61 74 2c 20 | 6f 70 6e 64 31 20 3d 20 | splat, |opnd1 = |
|000046e0| 73 6f 75 72 63 65 2c 20 | 6f 70 6e 64 32 20 3d 20 |source, |opnd2 = |
|000046f0| 6c 69 74 65 72 61 6c 20 | 69 6e 64 69 63 61 74 69 |literal |indicati|
|00004700| 6e 67 20 0d 09 09 09 09 | 09 09 09 09 5c 20 77 68 |ng .....|....\ wh|
|00004710| 69 63 68 20 65 6c 65 6d | 65 6e 74 2e 0d 09 09 09 |ich elem|ent.....|
|00004720| 09 09 09 09 09 5c 20 46 | 6f 72 20 73 70 6c 61 74 |.....\ F|or splat|
|00004730| 20 69 6d 6d 65 64 69 61 | 74 65 2c 20 6f 70 6e 64 | immedia|te, opnd|
|00004740| 32 20 3d 20 6c 69 74 65 | 72 61 6c 20 62 65 69 6e |2 = lite|ral bein|
|00004750| 67 20 73 70 6c 61 74 74 | 65 64 2c 20 0d 09 09 09 |g splatt|ed, ....|
|00004760| 09 09 09 09 09 5c 20 6f | 70 6e 64 31 20 69 73 20 |.....\ o|pnd1 is |
|00004770| 61 20 64 75 6d 6d 79 2c | 20 73 69 6e 63 65 20 77 |a dummy,| since w|
|00004780| 65 20 61 6c 77 61 79 73 | 20 68 61 76 65 20 74 6f |e always| have to|
|00004790| 20 68 61 76 65 20 33 20 | 6f 70 65 72 61 6e 64 73 | have 3 |operands|
|000047a0| 2e 0d 0d 09 09 09 09 72 | 65 66 74 79 70 65 3a 20 |.......r|eftype: |
|000047b0| 6f 70 6e 64 32 20 20 6c | 69 74 52 65 66 20 3c 3e |opnd2 l|itRef <>|
|000047c0| 0d 09 09 09 09 49 46 0d | 09 09 09 09 09 32 32 38 |.....IF.|.....228|
|000047d0| 20 70 6f 73 74 70 6f 6e | 65 20 6c 69 74 65 72 61 | postpon|e litera|
|000047e0| 6c 20 20 70 6f 73 74 70 | 6f 6e 65 20 64 69 65 0d |l postp|one die.|
|000047f0| 09 09 09 09 09 09 09 09 | 5c 20 22 73 70 6c 61 74 |........|\ "splat|
|00004800| 3a 20 6f 72 20 4e 73 70 | 6c 61 74 3a 20 6d 75 73 |: or Nsp|lat: mus|
|00004810| 74 20 68 61 76 65 20 61 | 20 6c 69 74 65 72 61 6c |t have a| literal|
|00004820| 20 6f 70 65 72 61 6e 64 | 22 0d 09 09 09 09 09 45 | operand|"......E|
|00004830| 58 49 54 0d 09 09 09 09 | 54 48 45 4e 0d 09 09 09 |XIT.....|THEN....|
|00004840| 09 6c 69 74 3a 20 6f 70 | 6e 64 32 20 2d 3e 20 6c |.lit: op|nd2 -> l|
|00004850| 69 74 56 61 6c 0d 0d 09 | 09 09 09 6f 70 63 6f 64 |itVal...|...opcod|
|00004860| 65 20 24 20 38 31 20 3d | 0d 09 09 09 09 49 46 09 |e $ 81 =|.....IF.|
|00004870| 09 09 09 5c 20 73 70 6c | 61 74 20 69 6d 6d 65 64 |...\ spl|at immed|
|00004880| 69 61 74 65 20 2d 2d 20 | 77 65 20 6e 65 65 64 20 |iate -- |we need |
|00004890| 74 6f 20 63 68 65 63 6b | 20 74 68 65 20 6c 69 74 |to check| the lit|
|000048a0| 65 72 61 6c 20 69 73 0d | 09 09 09 09 09 09 09 09 |eral is.|........|
|000048b0| 5c 20 20 77 69 74 68 69 | 6e 20 62 6f 75 6e 64 73 |\ withi|n bounds|
|000048c0| 2e 0d 09 09 09 09 09 6c | 69 74 56 61 6c 20 2d 33 |.......l|itVal -3|
|000048d0| 32 20 33 31 20 77 69 74 | 68 69 6e 3f 20 6e 69 70 |2 31 wit|hin? nip|
|000048e0| 0d 09 09 09 09 09 4e 49 | 46 20 32 32 36 20 64 69 |......NI|F 226 di|
|000048f0| 65 20 20 54 48 45 4e 09 | 09 5c 20 22 4c 69 74 65 |e THEN.|.\ "Lite|
|00004900| 72 61 6c 20 66 6f 72 20 | 4e 73 70 6c 61 74 3a 20 |ral for |Nsplat: |
|00004910| 6d 75 73 74 20 62 65 20 | 62 65 74 77 65 65 6e 20 |must be |between |
|00004920| 2d 33 32 20 61 6e 64 20 | 33 31 22 0d 09 09 09 09 |-32 and |31".....|
|00004930| 09 76 65 63 4b 69 6e 64 | 20 24 20 38 30 20 61 6e |.vecKind| $ 80 an|
|00004940| 64 0d 09 09 09 09 09 4e | 49 46 09 09 09 09 09 09 |d......N|IF......|
|00004950| 5c 20 75 6e 73 69 67 6e | 65 64 0d 09 09 09 09 09 |\ unsign|ed......|
|00004960| 09 6c 69 74 56 61 6c 20 | 30 3c 20 49 46 20 20 32 |.litVal |0< IF 2|
|00004970| 32 37 20 64 69 65 20 20 | 54 48 45 4e 0d 09 09 09 |27 die |THEN....|
|00004980| 09 09 09 09 5c 20 22 4e | 73 70 6c 61 74 3a 20 20 |....\ "N|splat: |
|00004990| 63 61 6e 27 74 20 61 73 | 73 69 67 6e 20 61 20 6e |can't as|sign a n|
|000049a0| 65 67 61 74 69 76 65 20 | 6c 69 74 65 72 61 6c 20 |egative |literal |
|000049b0| 74 6f 20 61 6e 20 75 6e | 73 69 67 6e 65 64 20 76 |to an un|signed v|
|000049c0| 65 63 74 6f 72 22 0d 09 | 09 09 09 09 54 48 45 4e |ector"..|....THEN|
|000049d0| 0d 09 09 09 09 09 66 61 | 6c 73 65 20 2d 3e 20 6f |......fa|lse -> o|
|000049e0| 70 31 3f 09 09 5c 20 6e | 6f 20 6f 70 65 72 61 6e |p1?..\ n|o operan|
|000049f0| 64 20 31 20 69 6e 20 74 | 68 69 73 20 63 61 73 65 |d 1 in t|his case|
|00004a00| 0d 09 09 09 09 54 48 45 | 4e 0d 0d 09 09 09 09 74 |.....THE|N......t|
|00004a10| 72 75 65 20 2d 3e 20 6c | 69 74 3f 0d 0d 09 09 44 |rue -> l|it?....D|
|00004a20| 45 46 41 55 4c 54 3d 3e | 20 20 64 72 6f 70 0d 09 |EFAULT=>| drop..|
|00004a30| 5d 43 41 53 45 0d 09 0d | 09 6f 70 31 3f 0d 09 49 |]CASE...|.op1?..I|
|00004a40| 46 0d 09 09 72 65 66 74 | 79 70 65 3a 20 6f 70 6e |F...reft|ype: opn|
|00004a50| 64 31 20 20 76 72 4e 61 | 6d 65 52 65 66 20 3c 3e |d1 vrNa|meRef <>|
|00004a60| 0d 09 09 49 46 09 09 09 | 5c 20 73 6f 75 72 63 65 |...IF...|\ source|
|00004a70| 20 69 73 20 69 6e 20 6d | 65 6d 2e 20 20 57 65 20 | is in m|em. We |
|00004a80| 66 65 74 63 68 20 69 74 | 20 74 6f 20 76 72 31 2e |fetch it| to vr1.|
|00004a90| 0d 09 09 09 6f 70 6e 64 | 31 20 67 65 74 5f 74 6f |....opnd|1 get_to|
|00004aa0| 5f 67 70 72 3f 20 64 72 | 6f 70 0d 09 09 09 31 20 |_gpr? dr|op....1 |
|00004ab0| 73 65 6c 65 63 74 3a 20 | 56 52 73 0d 09 09 09 6f |select: |VRs....o|
|00004ac0| 74 46 65 74 63 68 20 6f | 74 56 65 63 4f 66 66 73 |tFetch o|tVecOffs|
|00004ad0| 65 74 20 2b 20 20 70 75 | 74 3a 20 69 76 61 72 3e |et + pu|t: ivar>|
|00004ae0| 20 6f 70 54 79 70 65 20 | 69 6e 20 56 52 73 0d 09 | opType |in VRs..|
|00004af0| 09 09 72 65 67 3a 20 6f | 70 6e 64 31 20 20 3e 41 |..reg: o|pnd1 >A|
|00004b00| 67 70 72 3a 20 56 52 73 | 20 20 30 20 3e 42 6c 69 |gpr: VRs| 0 >Bli|
|00004b10| 74 3a 20 56 52 73 0d 09 | 09 09 63 6f 6d 70 69 6c |t: VRs..|..compil|
|00004b20| 65 3a 20 56 52 73 0d 09 | 09 09 66 72 65 65 3a 20 |e: VRs..|..free: |
|00004b30| 6f 70 6e 64 31 0d 09 09 | 09 31 20 3e 56 52 3a 20 |opnd1...|.1 >VR: |
|00004b40| 6f 70 6e 64 31 0d 09 09 | 54 48 45 4e 0d 09 45 4c |opnd1...|THEN..EL|
|00004b50| 53 45 0d 09 09 30 20 3e | 76 72 3a 20 6f 70 6e 64 |SE...0 >|vr: opnd|
|00004b60| 31 09 09 5c 20 6e 6f 20 | 6f 70 6e 64 31 2c 20 73 |1..\ no |opnd1, s|
|00004b70| 6f 20 77 65 20 6a 75 73 | 74 20 6d 61 6b 65 20 73 |o we jus|t make s|
|00004b80| 75 72 65 20 74 68 65 20 | 66 69 65 6c 64 20 69 73 |ure the |field is|
|00004b90| 20 7a 65 72 6f 0d 09 54 | 48 45 4e 0d 0d 09 34 6f | zero..T|HEN...4o|
|00004ba0| 70 3f 0d 09 49 46 09 09 | 09 09 09 5c 20 77 65 20 |p?..IF..|...\ we |
|00004bb0| 6e 65 65 64 20 74 6f 20 | 63 68 65 63 6b 20 69 66 |need to |check if|
|00004bc0| 20 6f 70 65 72 61 6e 64 | 20 33 20 69 73 20 69 6e | operand| 3 is in|
|00004bd0| 20 6d 65 6d 2c 20 61 6e | 64 0d 09 09 09 09 09 09 | mem, an|d.......|
|00004be0| 5c 20 20 69 66 20 73 6f | 2c 20 66 65 74 63 68 20 |\ if so|, fetch |
|00004bf0| 74 6f 20 76 72 32 2e 0d | 09 09 72 65 66 74 79 70 |to vr2..|..reftyp|
|00004c00| 65 3a 20 6f 70 6e 64 33 | 20 20 76 72 4e 61 6d 65 |e: opnd3| vrName|
|00004c10| 52 65 66 20 3c 3e 0d 09 | 09 49 46 09 09 09 09 5c |Ref <>..|.IF....\|
|00004c20| 20 69 74 27 73 20 69 6e | 20 6d 65 6d 2e 0d 09 09 | it's in| mem....|
|00004c30| 09 6f 70 6e 64 33 20 67 | 65 74 5f 74 6f 5f 67 70 |.opnd3 g|et_to_gp|
|00004c40| 72 3f 20 64 72 6f 70 0d | 09 09 09 32 20 73 65 6c |r? drop.|...2 sel|
|00004c50| 65 63 74 3a 20 56 52 73 | 0d 09 09 09 6f 74 46 65 |ect: VRs|....otFe|
|00004c60| 74 63 68 20 6f 74 56 65 | 63 4f 66 66 73 65 74 20 |tch otVe|cOffset |
|00004c70| 2b 20 20 70 75 74 3a 20 | 69 76 61 72 3e 20 6f 70 |+ put: |ivar> op|
|00004c80| 54 79 70 65 20 69 6e 20 | 56 52 73 0d 09 09 09 72 |Type in |VRs....r|
|00004c90| 65 67 3a 20 6f 70 6e 64 | 33 20 20 3e 41 67 70 72 |eg: opnd|3 >Agpr|
|00004ca0| 3a 20 56 52 73 20 20 30 | 20 3e 42 6c 69 74 3a 20 |: VRs 0| >Blit: |
|00004cb0| 56 52 73 0d 09 09 09 63 | 6f 6d 70 69 6c 65 3a 20 |VRs....c|ompile: |
|00004cc0| 56 52 73 0d 09 09 09 66 | 72 65 65 3a 20 6f 70 6e |VRs....f|ree: opn|
|00004cd0| 64 33 0d 09 09 09 32 20 | 3e 56 52 3a 20 6f 70 6e |d3....2 |>VR: opn|
|00004ce0| 64 33 0d 09 09 54 48 45 | 4e 0d 09 54 48 45 4e 0d |d3...THE|N..THEN.|
|00004cf0| 0d 09 6c 69 74 3f 0d 09 | 49 46 0d 09 09 76 72 23 |..lit?..|IF...vr#|
|00004d00| 20 73 65 6c 65 63 74 3a | 20 56 52 73 0d 09 09 6f | select:| VRs...o|
|00004d10| 70 63 6f 64 65 20 20 6f | 74 56 65 63 4f 66 66 73 |pcode o|tVecOffs|
|00004d20| 65 74 20 2b 20 20 70 75 | 74 3a 20 69 76 61 72 3e |et + pu|t: ivar>|
|00004d30| 20 6f 70 54 79 70 65 20 | 69 6e 20 56 52 73 0d 09 | opType |in VRs..|
|00004d40| 09 76 65 63 4b 69 6e 64 | 20 20 70 75 74 3a 20 69 |.vecKind| put: i|
|00004d50| 76 61 72 3e 20 76 65 63 | 4b 69 6e 64 20 69 6e 20 |var> vec|Kind in |
|00004d60| 56 52 73 0d 09 09 72 65 | 67 3a 20 6f 70 6e 64 31 |VRs...re|g: opnd1|
|00004d70| 20 20 3e 41 76 72 3a 20 | 56 52 73 09 09 09 5c 20 | >Avr: |VRs...\ |
|00004d80| 73 6f 75 72 63 65 20 72 | 65 67 69 73 74 65 72 20 |source r|egister |
|00004d90| 28 7a 65 72 6f 20 69 66 | 20 6e 6f 6e 65 29 0d 09 |(zero if| none)..|
|00004da0| 09 6c 69 74 56 61 6c 20 | 20 3e 42 6c 69 74 3a 20 |.litVal | >Blit: |
|00004db0| 56 52 73 09 09 09 09 5c | 20 6c 69 74 65 72 61 6c |VRs....\| literal|
|00004dc0| 20 76 61 6c 75 65 0d 09 | 09 63 6f 6d 70 69 6c 65 | value..|.compile|
|00004dd0| 3a 20 56 52 73 0d 09 45 | 4c 53 45 0d 09 09 72 65 |: VRs..E|LSE...re|
|00004de0| 66 74 79 70 65 3a 20 6f | 70 6e 64 32 0d 09 09 76 |ftype: o|pnd2...v|
|00004df0| 72 4e 61 6d 65 52 65 66 | 20 3c 3e 0d 09 09 49 46 |rNameRef| <>...IF|
|00004e00| 0d 09 09 09 6f 70 6e 64 | 32 20 67 65 74 5f 74 6f |....opnd|2 get_to|
|00004e10| 5f 67 70 72 3f 20 64 72 | 6f 70 0d 09 09 09 32 20 |_gpr? dr|op....2 |
|00004e20| 73 65 6c 65 63 74 3a 20 | 56 52 73 0d 09 09 09 6f |select: |VRs....o|
|00004e30| 74 46 65 74 63 68 20 6f | 74 56 65 63 4f 66 66 73 |tFetch o|tVecOffs|
|00004e40| 65 74 20 2b 20 20 70 75 | 74 3a 20 69 76 61 72 3e |et + pu|t: ivar>|
|00004e50| 20 6f 70 54 79 70 65 20 | 69 6e 20 56 52 73 0d 09 | opType |in VRs..|
|00004e60| 09 09 72 65 67 3a 20 6f | 70 6e 64 31 20 20 3e 41 |..reg: o|pnd1 >A|
|00004e70| 67 70 72 3a 20 56 52 73 | 20 20 30 20 3e 42 6c 69 |gpr: VRs| 0 >Bli|
|00004e80| 74 3a 20 56 52 73 0d 09 | 09 09 63 6f 6d 70 69 6c |t: VRs..|..compil|
|00004e90| 65 3a 20 56 52 73 0d 09 | 09 09 66 72 65 65 3a 20 |e: VRs..|..free: |
|00004ea0| 6f 70 6e 64 32 0d 09 09 | 09 32 20 3e 56 52 3a 20 |opnd2...|.2 >VR: |
|00004eb0| 6f 70 6e 64 32 0d 09 09 | 54 48 45 4e 0d 0d 09 09 |opnd2...|THEN....|
|00004ec0| 76 72 23 20 73 65 6c 65 | 63 74 3a 20 56 52 73 0d |vr# sele|ct: VRs.|
|00004ed0| 09 09 72 65 67 3a 20 6f | 70 6e 64 31 20 20 3e 41 |..reg: o|pnd1 >A|
|00004ee0| 76 72 3a 20 56 52 73 09 | 09 09 09 5c 20 66 69 72 |vr: VRs.|...\ fir|
|00004ef0| 73 74 20 73 6f 75 72 63 | 65 20 6f 70 65 72 61 6e |st sourc|e operan|
|00004f00| 64 0d 09 09 72 65 67 3a | 20 6f 70 6e 64 32 20 20 |d...reg:| opnd2 |
|00004f10| 3e 42 76 72 3a 20 56 52 | 73 09 09 09 09 5c 20 73 |>Bvr: VR|s....\ s|
|00004f20| 65 63 6f 6e 64 20 73 6f | 75 72 63 65 20 6f 70 65 |econd so|urce ope|
|00004f30| 72 61 6e 64 0d 09 09 34 | 6f 70 3f 0d 09 09 49 46 |rand...4|op?...IF|
|00004f40| 09 72 65 67 3a 20 6f 70 | 6e 64 33 20 20 3e 43 76 |.reg: op|nd3 >Cv|
|00004f50| 72 3a 20 56 52 73 20 20 | 54 48 45 4e 09 09 5c 20 |r: VRs |THEN..\ |
|00004f60| 74 68 69 72 64 20 73 6f | 75 72 63 65 20 6f 70 65 |third so|urce ope|
|00004f70| 72 61 6e 64 2c 20 69 66 | 20 61 6e 79 0d 0d 09 09 |rand, if| any....|
|00004f80| 6f 70 63 6f 64 65 20 24 | 20 32 30 30 20 6f 72 20 |opcode $| 200 or |
|00004f90| 20 70 75 74 3a 20 69 76 | 61 72 3e 20 6f 70 54 79 | put: iv|ar> opTy|
|00004fa0| 70 65 20 69 6e 20 56 52 | 73 0d 0d 09 09 6f 70 63 |pe in VR|s....opc|
|00004fb0| 6f 64 65 20 24 20 32 33 | 20 24 20 32 35 20 77 69 |ode $ 23| $ 25 wi|
|00004fc0| 74 68 69 6e 3f 20 6e 69 | 70 0d 09 09 09 09 09 5c |thin? ni|p......\|
|00004fd0| 20 74 72 75 65 20 69 66 | 20 6c 6f 67 69 63 61 6c | true if| logical|
|00004fe0| 2c 20 66 6f 72 20 77 68 | 69 63 68 20 76 65 63 4b |, for wh|ich vecK|
|00004ff0| 69 6e 64 20 69 73 20 69 | 67 6e 6f 72 65 64 2e 20 |ind is i|gnored. |
|00005000| 20 0d 09 09 09 09 09 5c | 20 20 49 6e 20 73 6f 6d | ......\| In som|
|00005010| 65 20 73 69 74 75 61 74 | 69 6f 6e 73 20 77 65 20 |e situat|ions we |
|00005020| 6d 69 67 68 74 6e 27 74 | 20 68 61 76 65 20 70 61 |mightn't| have pa|
|00005030| 73 73 65 64 20 69 6e 20 | 7a 65 72 6f 2c 20 0d 09 |ssed in |zero, ..|
|00005040| 09 09 09 09 5c 20 20 73 | 6f 20 69 6e 20 74 68 69 |....\ s|o in thi|
|00005050| 73 20 63 61 73 65 20 77 | 65 20 6a 75 73 74 20 66 |s case w|e just f|
|00005060| 6f 72 63 65 20 69 74 20 | 74 6f 20 7a 65 72 6f 2e |orce it |to zero.|
|00005070| 0d 09 09 6e 6f 74 20 76 | 65 63 4b 69 6e 64 20 61 |...not v|ecKind a|
|00005080| 6e 64 0d 09 09 70 75 74 | 3a 20 69 76 61 72 3e 20 |nd...put|: ivar> |
|00005090| 76 65 63 4b 69 6e 64 20 | 69 6e 20 56 52 73 0d 09 |vecKind |in VRs..|
|000050a0| 09 63 6f 6d 70 69 6c 65 | 3a 20 56 52 73 0d 09 54 |.compile|: VRs..T|
|000050b0| 48 45 4e 0d 0d 09 73 74 | 6f 72 65 62 61 63 6b 3f |HEN...st|oreback?|
|000050c0| 0d 09 49 46 0d 09 09 67 | 70 72 23 20 3e 41 67 70 |..IF...g|pr# >Agp|
|000050d0| 72 3a 20 56 52 73 20 20 | 30 20 3e 42 6c 69 74 3a |r: VRs |0 >Blit:|
|000050e0| 20 56 52 73 0d 09 09 6f | 74 53 74 6f 72 65 20 6f | VRs...o|tStore o|
|000050f0| 74 56 65 63 4f 66 66 73 | 65 74 20 2b 20 20 70 75 |tVecOffs|et + pu|
|00005100| 74 3a 20 69 76 61 72 3e | 20 6f 70 54 79 70 65 20 |t: ivar>| opType |
|00005110| 69 6e 20 56 52 73 0d 09 | 09 63 6f 6d 70 69 6c 65 |in VRs..|.compile|
|00005120| 3a 20 56 52 73 0d 09 09 | 67 70 72 23 20 20 66 72 |: VRs...|gpr# fr|
|00005130| 65 65 5f 67 70 72 0d 09 | 54 48 45 4e 0d 3b 0d 0d |ee_gpr..|THEN.;..|
|00005140| 5c 20 77 65 20 64 65 66 | 69 6e 65 20 5f 5f 76 32 |\ we def|ine __v2|
|00005150| 6f 70 20 61 6e 64 20 5f | 5f 76 33 6f 70 20 69 6e |op and _|_v3op in|
|00005160| 20 66 69 6c 65 20 56 65 | 63 74 6f 72 73 20 73 69 | file Ve|ctors si|
|00005170| 6e 63 65 20 74 68 65 79 | 20 6e 65 65 64 20 69 6e |nce they| need in|
|00005180| 74 72 70 31 20 0d 5c 20 | 20 77 68 69 63 68 20 69 |trp1 .\ | which i|
|00005190| 73 6e 27 74 20 64 65 66 | 69 6e 65 64 20 74 69 6c |sn't def|ined til|
|000051a0| 6c 20 63 67 37 2e 0d 0d | 5b 54 48 45 4e 5d 0d 0d |l cg7...|[THEN]..|
|000051b0| 0d 50 50 43 3f 0d 5b 49 | 46 5d 0d 5c 20 4c 49 54 |.PPC?.[I|F].\ LIT|
|000051c0| 45 52 41 4c 20 69 73 20 | 6d 6f 76 65 64 20 62 61 |ERAL is |moved ba|
|000051d0| 63 6b 20 74 6f 20 63 67 | 35 20 2d 20 77 65 20 73 |ck to cg|5 - we s|
|000051e0| 74 69 6c 6c 20 6e 65 65 | 64 20 74 68 65 20 6f 6c |till nee|d the ol|
|000051f0| 64 20 64 65 66 6e 2c 20 | 61 6e 64 20 63 61 6e 27 |d defn, |and can'|
|00005200| 74 0d 5c 20 20 72 65 73 | 6f 72 74 20 74 6f 20 70 |t.\ res|ort to p|
|00005210| 70 63 5f 69 6d 6d 65 64 | 69 61 74 65 20 73 69 6e |pc_immed|iate sin|
|00005220| 63 65 20 69 6e 20 63 6f | 6d 70 69 6c 69 6e 67 20 |ce in co|mpiling |
|00005230| 6e 75 6d 62 65 72 73 20 | 77 65 20 6e 65 65 64 20 |numbers |we need |
|00005240| 74 68 65 20 6e 65 77 20 | 64 65 66 6e 2e 0d 0d 5b |the new |defn...[|
|00005250| 45 4c 53 45 5d 0d 0d 3a | 20 4c 49 54 45 52 41 4c |ELSE]..:| LITERAL|
|00005260| 09 5c 20 28 20 6e 20 2d | 2d 20 29 09 43 6f 6d 70 |.\ ( n -|- ).Comp|
|00005270| 69 6c 65 73 20 61 20 66 | 65 74 63 68 20 6f 66 20 |iles a f|etch of |
|00005280| 6e 20 61 73 20 61 20 6c | 69 74 65 72 61 6c 2e 0d |n as a l|iteral..|
|00005290| 09 5c 20 57 65 20 6a 75 | 73 74 20 70 75 73 68 20 |.\ We ju|st push |
|000052a0| 6f 6e 74 6f 20 63 73 74 | 6b 2c 20 68 6f 70 69 6e |onto cst|k, hopin|
|000052b0| 67 20 77 65 20 63 61 6e | 20 63 6f 6d 62 69 6e 65 |g we can| combine|
|000052c0| 20 77 69 74 68 20 61 6e | 0d 09 5c 20 20 6f 70 20 | with an|..\ op |
|000052d0| 61 74 20 72 75 6e 20 74 | 69 6d 65 0d 09 09 63 6c |at run t|ime...cl|
|000052e0| 65 61 72 3a 20 6f 70 6e | 64 31 20 20 3e 6c 69 74 |ear: opn|d1 >lit|
|000052f0| 3a 20 6f 70 6e 64 31 0d | 09 09 6f 70 6e 64 31 20 |: opnd1.|..opnd1 |
|00005300| 70 75 73 68 20 20 3b 09 | 09 09 09 69 6d 6d 65 64 |push ;.|...immed|
|00005310| 69 61 74 65 0d 0d 5b 54 | 48 45 4e 5d 0d 0d 3a 20 |iate..[T|HEN]..: |
|00005320| 66 65 74 63 68 56 61 6c | 0d 09 36 34 62 69 74 3f |fetchVal|..64bit?|
|00005330| 20 49 46 20 38 20 45 4c | 53 45 20 34 20 54 48 45 | IF 8 EL|SE 4 THE|
|00005340| 4e 0d 09 30 0d 09 64 6f | 5f 66 65 74 63 68 20 20 |N..0..do|_fetch |
|00005350| 3b 0d 09 0d 0d 3a 20 73 | 74 6f 72 65 56 61 6c 0d |;....: s|toreVal.|
|00005360| 09 36 34 62 69 74 3f 20 | 49 46 20 38 20 45 4c 53 |.64bit? |IF 8 ELS|
|00005370| 45 20 34 20 54 48 45 4e | 0d 09 64 6f 5f 73 74 6f |E 4 THEN|..do_sto|
|00005380| 72 65 0d 3b 0d 0d 0d 3a | 20 56 41 4c 5f 48 20 20 |re.;...:| VAL_H |
|00005390| 7b 20 5e 76 61 6c 75 65 | 20 2d 2d 20 7d 0d 0d 09 |{ ^value| -- }...|
|000053a0| 64 65 62 75 67 3f 20 69 | 66 0d 09 09 2e 22 20 76 |debug? i|f...." v|
|000053b0| 61 6c 5f 68 22 20 63 72 | 0d 09 74 68 65 6e 0d 0d |al_h" cr|..then..|
|000053c0| 09 5e 76 61 6c 75 65 20 | 20 32 2b 20 2d 3e 20 5e |.^value | 2+ -> ^|
|000053d0| 76 61 6c 75 65 09 5c 20 | 61 6c 69 67 6e 20 6f 6e |value.\ |align on|
|000053e0| 20 74 68 65 20 72 65 6c | 6f 63 20 61 64 64 72 0d | the rel|oc addr.|
|000053f0| 0d 09 5e 76 61 6c 75 65 | 20 40 62 26 64 09 09 09 |..^value| @b&d...|
|00005400| 09 5c 20 67 65 74 20 66 | 69 6e 61 6c 20 62 61 73 |.\ get f|inal bas|
|00005410| 65 20 72 65 67 23 20 61 | 6e 64 20 64 69 73 70 6c |e reg# a|nd displ|
|00005420| 61 63 65 6d 65 6e 74 0d | 09 28 6c 69 74 41 64 64 |acement.|.(litAdd|
|00005430| 72 29 09 09 09 09 5c 20 | 67 65 6e 65 72 61 74 65 |r)....\ |generate|
|00005440| 73 20 74 68 65 20 61 64 | 64 72 20 69 6e 20 47 50 |s the ad|dr in GP|
|00005450| 52 20 67 69 76 65 6e 20 | 62 79 20 72 65 73 31 20 |R given |by res1 |
|00005460| 26 20 70 75 73 68 65 73 | 0d 0d 5c 09 67 70 72 3a |& pushes|..\.gpr:|
|00005470| 20 72 65 73 31 20 20 73 | 65 6c 65 63 74 3a 20 47 | res1 s|elect: G|
|00005480| 50 52 73 0d 5c 09 47 50 | 52 73 20 63 6f 70 79 4f |PRs.\.GP|Rs copyO|
|00005490| 44 3a 20 76 61 6c 4f 44 | 09 09 5c 20 73 61 76 65 |D: valOD|..\ save|
|000054a0| 20 74 68 65 20 4f 44 20 | 69 6e 20 76 61 6c 4f 44 | the OD |in valOD|
|000054b0| 20 61 73 20 77 65 20 6d | 61 79 20 6e 65 65 64 20 | as we m|ay need |
|000054c0| 69 74 0d 09 73 76 4f 70 | 63 6f 64 65 0d 09 4e 49 |it..svOp|code..NI|
|000054d0| 46 09 09 09 09 09 09 5c | 20 69 74 27 73 20 61 20 |F......\| it's a |
|000054e0| 66 65 74 63 68 0d 09 09 | 66 65 74 63 68 56 61 6c |fetch...|fetchVal|
|000054f0| 0d 09 45 4c 53 45 09 09 | 09 09 09 5c 20 69 74 27 |..ELSE..|...\ it'|
|00005500| 73 20 73 6f 6d 65 20 6b | 69 6e 64 20 6f 66 20 73 |s some k|ind of s|
|00005510| 74 6f 72 65 0d 09 09 73 | 74 6f 72 65 56 61 6c 0d |tore...s|toreVal.|
|00005520| 09 54 48 45 4e 0d 3b 0d | 0d 3a 20 46 56 41 4c 5f |.THEN.;.|.: FVAL_|
|00005530| 48 20 20 7b 20 5e 76 61 | 6c 75 65 20 2d 2d 20 7d |H { ^va|lue -- }|
|00005540| 0d 09 64 65 62 75 67 3f | 20 69 66 0d 09 09 2e 22 |..debug?| if...."|
|00005550| 20 66 76 61 6c 5f 68 22 | 20 63 72 0d 09 74 68 65 | fval_h"| cr..the|
|00005560| 6e 0d 0d 09 5e 76 61 6c | 75 65 20 20 32 2b 20 2d |n...^val|ue 2+ -|
|00005570| 3e 20 5e 76 61 6c 75 65 | 09 5c 20 61 6c 69 67 6e |> ^value|.\ align|
|00005580| 20 6f 6e 20 74 68 65 20 | 72 65 6c 6f 63 20 61 64 | on the |reloc ad|
|00005590| 64 72 0d 0d 09 5e 76 61 | 6c 75 65 20 40 62 26 64 |dr...^va|lue @b&d|
|000055a0| 09 09 09 09 5c 20 67 65 | 74 20 66 69 6e 61 6c 20 |....\ ge|t final |
|000055b0| 62 61 73 65 20 72 65 67 | 23 20 61 6e 64 20 64 69 |base reg|# and di|
|000055c0| 73 70 6c 61 63 65 6d 65 | 6e 74 0d 09 28 6c 69 74 |splaceme|nt..(lit|
|000055d0| 41 64 64 72 29 09 09 09 | 09 5c 20 67 65 6e 65 72 |Addr)...|.\ gener|
|000055e0| 61 74 65 73 20 74 68 65 | 20 61 64 64 72 20 69 6e |ates the| addr in|
|000055f0| 20 47 50 52 20 67 69 76 | 65 6e 20 62 79 20 72 65 | GPR giv|en by re|
|00005600| 73 31 20 26 20 70 75 73 | 68 65 73 0d 0d 09 73 76 |s1 & pus|hes...sv|
|00005610| 4f 70 63 6f 64 65 0d 09 | 4e 49 46 09 09 09 09 09 |Opcode..|NIF.....|
|00005620| 09 5c 20 69 74 27 73 20 | 61 20 66 65 74 63 68 0d |.\ it's |a fetch.|
|00005630| 09 09 38 20 64 6f 5f 66 | 70 5f 66 65 74 63 68 0d |..8 do_f|p_fetch.|
|00005640| 09 45 4c 53 45 09 09 09 | 09 09 5c 20 69 74 27 73 |.ELSE...|..\ it's|
|00005650| 20 73 6f 6d 65 20 6b 69 | 6e 64 20 6f 66 20 73 74 | some ki|nd of st|
|00005660| 6f 72 65 0d 09 09 38 20 | 64 6f 5f 66 70 5f 73 74 |ore...8 |do_fp_st|
|00005670| 6f 72 65 0d 09 54 48 45 | 4e 0d 3b 0d 0d 0d 3a 20 |ore..THE|N.;...: |
|00005680| 43 4f 4e 53 54 5f 48 09 | 5c 20 28 20 63 66 61 20 |CONST_H.|\ ( cfa |
|00005690| 2d 2d 20 29 0d 09 32 2b | 0d 09 40 20 20 70 6f 73 |-- )..2+|..@ pos|
|000056a0| 74 70 6f 6e 65 20 6c 69 | 74 65 72 61 6c 20 20 3b |tpone li|teral ;|
|000056b0| 09 09 5c 20 6e 6f 74 20 | 74 6f 6f 20 68 61 72 64 |..\ not |too hard|
|000056c0| 21 0d 0d 3a 20 46 43 4f | 4e 5f 48 09 5c 20 28 20 |!..: FCO|N_H.\ ( |
|000056d0| 63 66 61 20 2d 2d 20 7d | 0d 09 32 2b 20 23 61 6c |cfa -- }|..2+ #al|
|000056e0| 69 67 6e 38 0d 09 6c 69 | 74 5f 61 64 64 72 20 20 |ign8..li|t_addr |
|000056f0| 70 6f 73 74 70 6f 6e 65 | 20 66 40 0d 3b 0d 0d 0d |postpone| f@.;...|
|00005700| 3a 20 46 45 54 43 48 52 | 45 47 09 5c 20 28 20 72 |: FETCHR|EG.\ ( r|
|00005710| 65 67 23 20 63 6f 64 65 | 20 2d 2d 20 29 0d 09 33 |eg# code| -- )..3|
|00005720| 20 3d 20 49 46 0d 09 09 | 3e 67 70 72 3a 20 6f 70 | = IF...|>gpr: op|
|00005730| 6e 64 31 09 20 6f 70 6e | 64 31 20 70 75 73 68 0d |nd1. opn|d1 push.|
|00005740| 09 45 4c 53 45 0d 09 09 | 3e 66 70 72 3a 20 6f 70 |.ELSE...|>fpr: op|
|00005750| 6e 64 31 20 20 6f 70 6e | 64 31 20 66 70 75 73 68 |nd1 opn|d1 fpush|
|00005760| 0d 09 54 48 45 4e 0d 09 | 61 6c 6c 6f 63 61 74 65 |..THEN..|allocate|
|00005770| 3a 20 6f 70 6e 64 31 20 | 20 3b 0d 0d 28 2a 0d 3a |: opnd1 | ;..(*.:|
|00005780| 20 46 45 54 43 48 52 45 | 47 09 5c 20 28 20 72 65 | FETCHRE|G.\ ( re|
|00005790| 67 23 20 63 6f 64 65 20 | 2d 2d 20 29 0d 09 33 20 |g# code |-- )..3 |
|000057a0| 3d 20 49 46 0d 09 09 6c | 6f 63 61 6c 53 65 63 74 |= IF...l|ocalSect|
|000057b0| 3f 0d 09 09 4e 49 46 0d | 09 09 09 31 73 74 5f 67 |?...NIF.|...1st_g|
|000057c0| 70 72 5f 6c 6f 63 61 6c | 20 32 2b 20 20 33 31 20 |pr_local| 2+ 31 |
|000057d0| 23 50 20 2d 20 20 77 69 | 74 68 69 6e 3f 0d 09 09 |#P - wi|thin?...|
|000057e0| 09 09 09 09 09 5c 20 32 | 2b 20 62 65 63 61 75 73 |.....\ 2|+ becaus|
|000057f0| 65 20 77 65 20 64 6f 6e | 27 74 20 77 61 6e 74 20 |e we don|'t want |
|00005800| 74 6f 20 69 6e 63 6c 75 | 64 65 20 49 20 61 6e 64 |to inclu|de I and|
|00005810| 20 74 68 65 20 0d 09 09 | 09 09 09 09 09 5c 20 20 | the ...|.....\ |
|00005820| 64 6f 20 6c 69 6d 69 74 | 20 20 72 65 67 20 69 6e |do limit| reg in|
|00005830| 20 74 68 65 20 74 65 73 | 74 21 0d 09 09 09 49 46 | the tes|t!....IF|
|00005840| 0d 09 09 09 09 64 75 70 | 20 73 65 6c 65 63 74 3a |.....dup| select:|
|00005850| 20 47 50 52 73 0d 09 09 | 09 09 67 65 74 3a 20 69 | GPRs...|..get: i|
|00005860| 76 61 72 3e 20 6f 70 54 | 79 70 65 20 69 6e 20 47 |var> opT|ype in G|
|00005870| 50 52 73 20 20 4e 49 46 | 20 20 31 31 32 20 64 69 |PRs NIF| 112 di|
|00005880| 65 20 20 54 48 45 4e 0d | 09 09 09 54 48 45 4e 0d |e THEN.|...THEN.|
|00005890| 09 09 54 48 45 4e 0d 09 | 09 3e 67 70 72 3a 20 6f |..THEN..|.>gpr: o|
|000058a0| 70 6e 64 31 09 20 6f 70 | 6e 64 31 20 70 75 73 68 |pnd1. op|nd1 push|
|000058b0| 0d 09 45 4c 53 45 0d 09 | 09 6c 6f 63 61 6c 53 65 |..ELSE..|.localSe|
|000058c0| 63 74 3f 0d 09 09 4e 49 | 46 0d 09 09 09 31 73 74 |ct?...NI|F....1st|
|000058d0| 5f 66 70 72 5f 6c 6f 63 | 61 6c 20 20 33 31 20 23 |_fpr_loc|al 31 #|
|000058e0| 46 50 20 2d 20 20 77 69 | 74 68 69 6e 3f 0d 09 09 |FP - wi|thin?...|
|000058f0| 09 49 46 0d 09 09 09 09 | 64 75 70 20 73 65 6c 65 |.IF.....|dup sele|
|00005900| 63 74 3a 20 46 50 52 73 | 0d 09 09 09 09 67 65 74 |ct: FPRs|.....get|
|00005910| 3a 20 69 76 61 72 3e 20 | 6f 70 54 79 70 65 20 69 |: ivar> |opType i|
|00005920| 6e 20 46 50 52 73 20 20 | 4e 49 46 20 20 31 31 32 |n FPRs |NIF 112|
|00005930| 20 64 69 65 20 20 54 48 | 45 4e 0d 09 09 09 54 48 | die TH|EN....TH|
|00005940| 45 4e 0d 09 09 54 48 45 | 4e 0d 09 09 3e 66 70 72 |EN...THE|N...>fpr|
|00005950| 3a 20 6f 70 6e 64 31 20 | 20 6f 70 6e 64 31 20 66 |: opnd1 | opnd1 f|
|00005960| 70 75 73 68 0d 09 54 48 | 45 4e 0d 09 61 6c 6c 6f |push..TH|EN..allo|
|00005970| 63 61 74 65 3a 20 6f 70 | 6e 64 31 20 20 3b 0d 2a |cate: op|nd1 ;.*|
|00005980| 29 0d 0d 3a 20 64 6f 5f | 72 65 67 20 20 7b 20 72 |)..: do_|reg { r|
|00005990| 65 67 23 20 63 6f 64 65 | 20 2d 2d 20 7d 0d 09 73 |eg# code| -- }..s|
|000059a0| 76 4f 70 63 6f 64 65 0d | 09 4e 49 46 09 09 09 09 |vOpcode.|.NIF....|
|000059b0| 09 5c 20 74 68 69 73 20 | 69 73 20 61 20 66 65 74 |.\ this |is a fet|
|000059c0| 63 68 0d 09 09 72 65 67 | 23 20 63 6f 64 65 20 66 |ch...reg|# code f|
|000059d0| 65 74 63 68 52 65 67 0d | 09 45 4c 53 45 09 09 09 |etchReg.|.ELSE...|
|000059e0| 09 5c 20 74 68 69 73 20 | 69 73 20 73 6f 6d 65 20 |.\ this |is some |
|000059f0| 6b 69 6e 64 20 6f 66 20 | 73 74 6f 72 65 0d 09 09 |kind of |store...|
|00005a00| 73 76 4f 70 63 6f 64 65 | 20 6f 74 53 74 6f 72 65 |svOpcode| otStore|
|00005a10| 20 3d 0d 09 09 4e 49 46 | 09 72 65 67 23 20 63 6f | =...NIF|.reg# co|
|00005a20| 64 65 20 66 65 74 63 68 | 52 65 67 0d 09 09 09 73 |de fetch|Reg....s|
|00005a30| 76 4f 70 63 6f 64 65 20 | 6d 6f 6e 61 64 69 63 3f |vOpcode |monadic?|
|00005a40| 20 20 4e 49 46 20 73 77 | 61 70 5f 63 73 74 6b 20 | NIF sw|ap_cstk |
|00005a50| 54 48 45 4e 0d 09 09 09 | 2d 3e 20 6f 70 65 72 61 |THEN....|-> opera|
|00005a60| 74 69 6f 6e 20 20 64 6f | 5f 61 72 69 74 68 5f 6f |tion do|_arith_o|
|00005a70| 70 0d 09 09 54 48 45 4e | 0d 09 09 63 6f 64 65 20 |p...THEN|...code |
|00005a80| 33 20 3d 0d 09 09 49 46 | 0d 09 09 09 31 20 6f 70 |3 =...IF|....1 op|
|00005a90| 65 72 61 6e 64 73 0d 09 | 09 09 6f 70 6e 64 31 20 |erands..|..opnd1 |
|00005aa0| 67 65 74 5f 74 6f 5f 67 | 70 72 3f 20 64 72 6f 70 |get_to_g|pr? drop|
|00005ab0| 0d 09 09 09 67 70 72 3a | 20 6f 70 6e 64 31 20 20 |....gpr:| opnd1 |
|00005ac0| 72 65 67 23 20 20 74 72 | 75 65 20 20 6d 6f 76 65 |reg# tr|ue move|
|00005ad0| 52 65 67 3a 20 47 50 52 | 73 0d 09 09 45 4c 53 45 |Reg: GPR|s...ELSE|
|00005ae0| 0d 09 09 09 31 20 66 6f | 70 65 72 61 6e 64 73 0d |....1 fo|perands.|
|00005af0| 09 09 09 66 70 72 3a 20 | 6f 70 6e 64 31 20 20 72 |...fpr: |opnd1 r|
|00005b00| 65 67 23 20 20 74 72 75 | 65 20 20 6d 6f 76 65 52 |eg# tru|e moveR|
|00005b10| 65 67 3a 20 46 50 52 73 | 0d 09 09 54 48 45 4e 0d |eg: FPRs|...THEN.|
|00005b20| 09 54 48 45 4e 0d 3b 0d | 0d 0d 5c 20 52 45 47 5f |.THEN.;.|..\ REG_|
|00005b30| 48 20 68 61 6e 64 6c 65 | 73 20 61 20 72 65 67 20 |H handle|s a reg |
|00005b40| 72 65 66 65 72 65 6e 63 | 65 20 2d 20 65 69 74 68 |referenc|e - eith|
|00005b50| 65 72 20 47 50 52 20 6f | 72 20 46 50 52 2e 20 20 |er GPR o|r FPR. |
|00005b60| 49 74 27 73 20 6e 65 76 | 65 72 0d 5c 20 20 63 61 |It's nev|er.\ ca|
|00005b70| 6c 6c 65 64 20 66 6f 72 | 20 61 20 36 38 6b 20 72 |lled for| a 68k r|
|00005b80| 65 67 69 73 74 65 72 2e | 0d 0d 3a 20 52 45 47 5f |egister.|..: REG_|
|00005b90| 48 20 20 7b 20 63 66 61 | 20 5c 20 6d 6f 64 65 20 |H { cfa| \ mode |
|00005ba0| 72 65 67 23 20 2d 2d 20 | 7d 0d 09 63 66 61 20 5e |reg# -- |}..cfa ^|
|00005bb0| 65 78 74 72 61 5f 69 6e | 66 6f 20 2d 3e 20 63 66 |extra_in|fo -> cf|
|00005bc0| 61 0d 09 63 66 61 20 31 | 2b 20 63 40 09 09 5c 20 |a..cfa 1|+ c@..\ |
|00005bd0| 72 65 67 23 0d 09 63 66 | 61 20 63 40 09 09 09 5c |reg#..cf|a c@...\|
|00005be0| 20 63 6f 64 65 20 2d 20 | 33 20 3d 20 67 70 72 2c | code - |3 = gpr,|
|00005bf0| 20 34 20 3d 20 66 70 72 | 0d 09 64 6f 5f 72 65 67 | 4 = fpr|..do_reg|
|00005c00| 0d 3b 0d 0d 0d 3a 20 4c | 4f 43 5f 48 09 09 5c 20 |.;...: L|OC_H..\ |
|00005c10| 6e 6f 74 65 3a 20 6c 6f | 63 23 20 63 6f 75 6e 74 |note: lo|c# count|
|00005c20| 73 20 66 72 6f 6d 20 72 | 69 67 68 74 20 74 6f 20 |s from r|ight to |
|00005c30| 6c 65 66 74 20 69 6e 20 | 74 68 65 20 6c 6f 63 61 |left in |the loca|
|00005c40| 6c 2f 70 61 72 6d 20 6c | 69 73 74 2c 0d 09 09 09 |l/parm l|ist,....|
|00005c50| 5c 20 62 75 74 20 77 65 | 27 72 65 20 61 73 73 69 |\ but we|'re assi|
|00005c60| 67 6e 69 6e 67 20 72 65 | 67 73 20 66 72 6f 6d 20 |gning re|gs from |
|00005c70| 6c 65 66 74 20 74 6f 20 | 72 69 67 68 74 20 69 6e |left to |right in|
|00005c80| 20 74 68 65 20 6c 69 73 | 74 2c 0d 09 09 09 5c 20 | the lis|t,....\ |
|00005c90| 67 6f 69 6e 67 20 66 72 | 6f 6d 20 72 33 31 20 64 |going fr|om r31 d|
|00005ca0| 6f 77 6e 20 28 73 69 6e | 63 65 20 74 68 69 73 20 |own (sin|ce this |
|00005cb0| 73 69 6d 70 6c 69 66 69 | 65 73 20 45 58 45 43 55 |simplifi|es EXECU|
|00005cc0| 54 45 29 2e 0d 09 64 72 | 6f 70 0d 09 33 32 20 20 |TE)...dr|op..32 |
|00005cd0| 23 50 4c 20 6c 6f 63 23 | 20 2d 20 20 2d 20 20 33 |#PL loc#| - - 3|
|00005ce0| 20 20 64 6f 5f 72 65 67 | 20 20 3b 0d 0d 3a 20 46 | do_reg| ;..: F|
|00005cf0| 4c 4f 43 5f 48 09 5c 20 | 64 6f 65 73 20 74 68 65 |LOC_H.\ |does the|
|00005d00| 20 73 61 6d 65 20 6a 6f | 62 20 66 6f 72 20 66 6c | same jo|b for fl|
|00005d10| 6f 61 74 69 6e 67 20 70 | 61 72 6d 73 2f 6c 6f 63 |oating p|arms/loc|
|00005d20| 61 6c 73 2e 0d 09 64 72 | 6f 70 0d 09 33 32 20 20 |als...dr|op..32 |
|00005d30| 23 46 50 4c 20 6c 6f 63 | 23 20 2d 20 20 2d 20 20 |#FPL loc|# - - |
|00005d40| 34 20 20 64 6f 5f 72 65 | 67 20 20 3b 0d 0d 0d 3a |4 do_re|g ;...:|
|00005d50| 20 72 65 67 5f 6e 61 6d | 65 20 20 28 20 72 65 67 | reg_nam|e ( reg|
|00005d60| 63 6f 64 65 20 72 65 67 | 23 20 2d 2d 20 29 0d 09 |code reg|# -- )..|
|00005d70| 63 6c 65 61 72 3a 20 6f | 70 6e 64 31 20 20 20 3e |clear: o|pnd1 >|
|00005d80| 72 65 67 3a 20 6f 70 6e | 64 31 0d 09 72 65 67 63 |reg: opn|d1..regc|
|00005d90| 6f 64 65 3e 6e 61 6d 65 | 52 65 66 20 20 3e 72 65 |ode>name|Ref >re|
|00005da0| 66 74 79 70 65 3a 20 6f | 70 6e 64 31 0d 09 6f 70 |ftype: o|pnd1..op|
|00005db0| 6e 64 31 20 70 75 73 68 | 0d 3b 0d 0d 0d 3a 20 56 |nd1 push|.;...: V|
|00005dc0| 45 43 54 5f 48 20 20 7b | 20 5e 76 65 63 74 20 2d |ECT_H {| ^vect -|
|00005dd0| 2d 20 7d 0d 0d 09 5e 76 | 65 63 74 20 32 2b 20 2d |- }...^v|ect 2+ -|
|00005de0| 3e 20 5e 76 65 63 74 09 | 09 5c 20 61 6c 69 67 6e |> ^vect.|.\ align|
|00005df0| 20 6f 6e 20 74 68 65 20 | 72 65 6c 6f 63 20 61 64 | on the |reloc ad|
|00005e00| 64 72 0d 0d 09 5e 76 65 | 63 74 20 40 62 26 64 09 |dr...^ve|ct @b&d.|
|00005e10| 09 09 09 5c 20 67 65 74 | 20 66 69 6e 61 6c 20 62 |...\ get| final b|
|00005e20| 61 73 65 20 72 65 67 23 | 20 61 6e 64 20 64 69 73 |ase reg#| and dis|
|00005e30| 70 6c 61 63 65 6d 65 6e | 74 0d 09 28 6c 69 74 41 |placemen|t..(litA|
|00005e40| 64 64 72 29 09 09 09 09 | 5c 20 67 65 6e 65 72 61 |ddr)....|\ genera|
|00005e50| 74 65 73 20 74 68 65 20 | 61 64 64 72 20 69 6e 20 |tes the |addr in |
|00005e60| 47 50 52 20 67 69 76 65 | 6e 20 62 79 20 72 65 73 |GPR give|n by res|
|00005e70| 31 20 26 20 70 75 73 68 | 65 73 0d 0d 09 73 76 4f |1 & push|es...svO|
|00005e80| 70 63 6f 64 65 0d 09 4e | 49 46 09 09 09 09 09 09 |pcode..N|IF......|
|00005e90| 09 5c 20 69 74 27 73 20 | 61 6e 20 65 78 65 63 75 |.\ it's |an execu|
|00005ea0| 74 65 0d 09 09 22 20 64 | 6f 56 65 63 74 22 20 20 |te..." d|oVect" |
|00005eb0| 65 76 61 6c 75 61 74 65 | 09 09 5c 20 6c 61 74 65 |evaluate|..\ late|
|00005ec0| 2d 62 69 6e 64 20 75 73 | 69 6e 67 20 65 76 61 6c |-bind us|ing eval|
|00005ed0| 75 61 74 65 20 2d 20 64 | 6f 56 65 63 74 20 6e 6f |uate - d|oVect no|
|00005ee0| 74 20 64 65 66 69 6e 65 | 64 20 79 65 74 0d 09 09 |t define|d yet...|
|00005ef0| 74 72 75 65 20 2d 3e 20 | 63 74 72 5f 63 6c 6f 62 |true -> |ctr_clob|
|00005f00| 62 65 72 65 64 3f 09 5c | 20 74 68 65 20 76 65 63 |bered?.\| the vec|
|00005f10| 74 20 6d 69 67 68 74 20 | 64 6f 20 61 6e 79 74 68 |t might |do anyth|
|00005f20| 69 6e 67 21 0d 0d 09 45 | 4c 53 45 09 09 09 09 09 |ing!...E|LSE.....|
|00005f30| 09 5c 20 69 74 27 73 20 | 61 20 73 74 6f 72 65 20 |.\ it's |a store |
|00005f40| 74 6f 20 74 68 65 20 76 | 65 63 74 0d 09 09 22 20 |to the v|ect..." |
|00005f50| 72 65 6c 6f 63 21 22 20 | 20 65 76 61 6c 75 61 74 |reloc!" | evaluat|
|00005f60| 65 0d 09 54 48 45 4e 0d | 3b 0d 0d 0d 3a 20 53 56 |e..THEN.|;...: SV|
|00005f70| 45 43 54 5f 48 20 20 7b | 20 5e 76 65 63 74 20 2d |ECT_H {| ^vect -|
|00005f80| 2d 20 7d 09 09 5c 20 73 | 79 73 74 65 6d 20 76 65 |- }..\ s|ystem ve|
|00005f90| 63 74 6f 72 73 20 61 72 | 65 20 6c 69 6b 65 20 76 |ctors ar|e like v|
|00005fa0| 65 63 74 6f 72 73 2c 20 | 62 75 74 20 68 61 76 65 |ectors, |but have|
|00005fb0| 20 61 20 64 65 66 61 75 | 6c 74 0d 09 09 09 09 09 | a defau|lt......|
|00005fc0| 09 09 5c 20 76 61 6c 75 | 65 20 34 20 62 79 74 65 |..\ valu|e 4 byte|
|00005fd0| 73 20 61 66 74 65 72 20 | 74 68 65 20 72 65 67 75 |s after |the regu|
|00005fe0| 6c 61 72 20 6f 6e 65 2c | 20 77 68 69 63 68 20 67 |lar one,| which g|
|00005ff0| 65 74 73 20 75 73 65 64 | 0d 09 09 09 09 09 09 09 |ets used|........|
|00006000| 5c 20 69 66 20 74 68 65 | 20 72 65 67 75 6c 61 72 |\ if the| regular|
|00006010| 20 6f 6e 65 20 69 73 20 | 7a 65 72 6f 2e 0d 0d 09 | one is |zero....|
|00006020| 5e 76 65 63 74 20 32 2b | 20 2d 3e 20 5e 76 65 63 |^vect 2+| -> ^vec|
|00006030| 74 09 09 5c 20 61 6c 69 | 67 6e 20 6f 6e 20 74 68 |t..\ ali|gn on th|
|00006040| 65 20 72 65 6c 6f 63 20 | 61 64 64 72 20 70 6f 69 |e reloc |addr poi|
|00006050| 6e 74 69 6e 67 20 74 6f | 20 64 61 74 61 20 61 72 |nting to| data ar|
|00006060| 65 61 0d 0d 09 5e 76 65 | 63 74 20 40 62 26 64 09 |ea...^ve|ct @b&d.|
|00006070| 09 09 09 5c 20 67 65 74 | 20 66 69 6e 61 6c 20 62 |...\ get| final b|
|00006080| 61 73 65 20 72 65 67 23 | 20 61 6e 64 20 64 69 73 |ase reg#| and dis|
|00006090| 70 6c 61 63 65 6d 65 6e | 74 0d 09 28 6c 69 74 41 |placemen|t..(litA|
|000060a0| 64 64 72 29 09 09 09 09 | 5c 20 67 65 6e 65 72 61 |ddr)....|\ genera|
|000060b0| 74 65 73 20 74 68 65 20 | 61 64 64 72 20 69 6e 20 |tes the |addr in |
|000060c0| 47 50 52 20 67 69 76 65 | 6e 20 62 79 20 72 65 73 |GPR give|n by res|
|000060d0| 31 20 26 20 70 75 73 68 | 65 73 0d 0d 09 73 76 4f |1 & push|es...svO|
|000060e0| 70 63 6f 64 65 0d 09 4e | 49 46 09 09 09 09 09 09 |pcode..N|IF......|
|000060f0| 09 5c 20 69 74 27 73 20 | 61 6e 20 65 78 65 63 75 |.\ it's |an execu|
|00006100| 74 65 0d 09 09 22 20 64 | 6f 53 76 65 63 74 22 20 |te..." d|oSvect" |
|00006110| 65 76 61 6c 75 61 74 65 | 09 09 5c 20 6c 61 74 65 |evaluate|..\ late|
|00006120| 2d 62 69 6e 64 20 75 73 | 69 6e 67 20 65 76 61 6c |-bind us|ing eval|
|00006130| 75 61 74 65 20 2d 20 64 | 6f 53 76 65 63 20 6e 6f |uate - d|oSvec no|
|00006140| 74 20 64 65 66 69 6e 65 | 64 20 79 65 74 0d 09 09 |t define|d yet...|
|00006150| 09 09 09 09 09 09 5c 20 | 20 74 68 65 20 66 69 72 |......\ | the fir|
|00006160| 73 74 20 74 69 6d 65 20 | 74 68 72 6f 75 67 68 0d |st time |through.|
|00006170| 09 09 74 72 75 65 20 2d | 3e 20 63 74 72 5f 63 6c |..true -|> ctr_cl|
|00006180| 6f 62 62 65 72 65 64 3f | 09 5c 20 74 68 65 20 76 |obbered?|.\ the v|
|00006190| 65 63 74 20 6d 69 67 68 | 74 20 64 6f 20 61 6e 79 |ect migh|t do any|
|000061a0| 74 68 69 6e 67 21 0d 09 | 45 4c 53 45 09 09 09 09 |thing!..|ELSE....|
|000061b0| 09 09 5c 20 69 74 27 73 | 20 61 20 73 74 6f 72 65 |..\ it's| a store|
|000061c0| 20 74 6f 20 74 68 65 20 | 76 65 63 74 0d 09 09 22 | to the |vect..."|
|000061d0| 20 72 65 6c 6f 63 21 22 | 20 20 65 76 61 6c 75 61 | reloc!"| evalua|
|000061e0| 74 65 0d 09 54 48 45 4e | 0d 3b 0d 0d 28 2a 09 44 |te..THEN|.;..(*.D|
|000061f0| 79 6e 61 6d 69 63 20 76 | 65 63 74 6f 72 73 20 61 |ynamic v|ectors a|
|00006200| 72 65 20 22 6c 69 67 68 | 74 77 65 69 67 68 74 22 |re "ligh|tweight"|
|00006210| 20 76 65 63 74 6f 72 73 | 20 69 6e 20 77 68 69 63 | vectors| in whic|
|00006220| 68 20 77 65 20 64 6f 6e | 27 74 20 75 73 65 20 61 |h we don|'t use a|
|00006230| 20 72 65 6c 6f 63 61 74 | 61 62 6c 65 0d 09 61 64 | relocat|able..ad|
|00006240| 64 72 20 62 75 74 20 6a | 75 73 74 20 73 74 6f 72 |dr but j|ust stor|
|00006250| 65 20 74 68 65 20 78 74 | 20 74 6f 20 62 65 20 65 |e the xt| to be e|
|00006260| 78 65 63 75 74 65 64 2c | 20 77 68 69 63 68 20 61 |xecuted,| which a|
|00006270| 6c 6c 6f 77 73 20 75 73 | 20 74 6f 20 70 6f 69 6e |llows us| to poin|
|00006280| 74 20 69 6e 74 6f 0d 09 | 61 20 6d 6f 64 75 6c 65 |t into..|a module|
|00006290| 20 69 66 20 77 65 20 6b | 6e 6f 77 20 69 74 27 73 | if we k|now it's|
|000062a0| 20 73 61 66 65 2e 20 20 | 54 68 65 73 65 20 73 68 | safe. |These sh|
|000062b0| 6f 75 6c 64 20 6e 65 76 | 65 72 20 62 65 20 73 61 |ould nev|er be sa|
|000062c0| 76 65 64 20 69 6e 20 74 | 68 65 20 64 69 63 20 61 |ved in t|he dic a|
|000062d0| 6e 64 20 75 73 65 64 0d | 09 61 66 74 65 72 20 72 |nd used.|.after r|
|000062e0| 65 6c 6f 61 64 69 6e 67 | 20 2d 20 68 65 6e 63 65 |eloading| - hence|
|000062f0| 20 74 68 65 20 6e 61 6d | 65 20 22 64 79 6e 61 6d | the nam|e "dynam|
|00006300| 69 63 22 2e 20 20 4c 69 | 6b 65 20 73 79 73 74 65 |ic". Li|ke syste|
|00006310| 6d 20 76 65 63 74 6f 72 | 73 2c 20 7a 65 72 6f 20 |m vector|s, zero |
|00006320| 6d 65 61 6e 73 0d 09 75 | 73 65 20 74 68 65 20 64 |means..u|se the d|
|00006330| 65 66 61 75 6c 74 2c 20 | 62 75 74 20 74 68 65 20 |efault, |but the |
|00006340| 64 65 66 61 75 6c 74 20 | 69 73 20 61 6c 77 61 79 |default |is alway|
|00006350| 73 20 64 6f 20 6e 6f 74 | 68 69 6e 67 2e 0d 2a 29 |s do not|hing..*)|
|00006360| 0d 0d 3a 20 64 79 6e 56 | 65 63 74 5f 68 20 20 7b |..: dynV|ect_h {|
|00006370| 20 5e 76 65 63 74 20 2d | 2d 20 7d 0d 0d 09 5e 76 | ^vect -|- }...^v|
|00006380| 65 63 74 20 32 2b 20 2d | 3e 20 5e 76 65 63 74 09 |ect 2+ -|> ^vect.|
|00006390| 09 5c 20 61 6c 69 67 6e | 20 6f 6e 20 74 68 65 20 |.\ align| on the |
|000063a0| 72 65 6c 6f 63 20 61 64 | 64 72 20 70 6f 69 6e 74 |reloc ad|dr point|
|000063b0| 69 6e 67 20 74 6f 20 64 | 61 74 61 20 61 72 65 61 |ing to d|ata area|
|000063c0| 0d 0d 09 5e 76 65 63 74 | 20 40 62 26 64 09 09 09 |...^vect| @b&d...|
|000063d0| 09 5c 20 67 65 74 20 66 | 69 6e 61 6c 20 62 61 73 |.\ get f|inal bas|
|000063e0| 65 20 72 65 67 23 20 61 | 6e 64 20 64 69 73 70 6c |e reg# a|nd displ|
|000063f0| 61 63 65 6d 65 6e 74 0d | 09 28 6c 69 74 41 64 64 |acement.|.(litAdd|
+--------+-------------------------+-------------------------+--------+--------+
Only 25.0 KB of data is shown above.